Re: [PATCH] KVM: x86: User mutex guards to eliminate __kvm_x86_vendor_init()

From: Nikolay Borisov
Date: Mon Oct 30 2023 - 12:17:28 EST




On 30.10.23 г. 18:07 ч., Sean Christopherson wrote:
On Mon, Oct 30, 2023, Nikolay Borisov wrote:
Current separation between (__){0,1}kvm_x86_vendor_init() is superfluos as

superfluous

But this intro is actively misleading. The double-underscore variant most definitely
isn't superfluous, e.g. it eliminates the need for gotos reduces the probability
of incorrect error codes, bugs in the error handling, etc. It _becomes_ superflous
after switching to guard(mutex).

IMO, this is one of the instances where the "problem, then solution" appoach is
counter-productive. If there are no objections, I'll massage the change log to
the below when applying (for 6.8, in a few weeks).

Use the recently introduced guard(mutex) infrastructure acquire and
automatically release vendor_module_lock when the guard goes out of scope.
Drop the inner __kvm_x86_vendor_init(), its sole purpose was to simplify
releasing vendor_module_lock in error paths.

No functional change intended.

Thanks, I'm fine with this changelog.


the the underscore version doesn't have any other callers.

Instead, use the newly added cleanup infrastructure to ensure that
kvm_x86_vendor_init() holds the vendor_module_lock throughout its
exectuion and that in case of error in the middle it's released. No
functional changes.