From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicholas Piggin Date: Tue, 25 Jan 2022 03:46:42 +0000 Subject: Re: [PATCH v2 4/4] KVM: PPC: Decrement module refcount if init_vm fails Message-Id: <1643082153.tb99kluqtm.astroid@bobo.none> List-Id: References: <20220124220803.1011673-1-farosas@linux.ibm.com> <20220124220803.1011673-5-farosas@linux.ibm.com> In-Reply-To: <20220124220803.1011673-5-farosas@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Fabiano Rosas , kvm-ppc@vger.kernel.org Cc: aik@ozlabs.ru, linuxppc-dev@lists.ozlabs.org Excerpts from Fabiano Rosas's message of January 25, 2022 8:08 am: > We increment the reference count for KVM-HV/PR before the call to > kvmppc_core_init_vm. If that function fails we need to decrement the > refcount. > > Signed-off-by: Fabiano Rosas > --- > Caught this while testing Nick's LPID patches by looking at > /sys/module/kvm_hv/refcnt Nice catch. Is this the only change in the series? You can just use kvm_ops->owner like try_module_get() does I think? Also try_module_get works on a NULL module same as module_put by the looks, so you could adjust that in this patch to remove the NULL check so it is consistent with the put. Reviewed-by: Nicholas Piggin Thanks, Nick > --- > arch/powerpc/kvm/powerpc.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/arch/powerpc/kvm/powerpc.c b/arch/powerpc/kvm/powerpc.c > index 2ad0ccd202d5..4285d0eac900 100644 > --- a/arch/powerpc/kvm/powerpc.c > +++ b/arch/powerpc/kvm/powerpc.c > @@ -431,6 +431,8 @@ int kvm_arch_check_processor_compat(void *opaque) > int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) > { > struct kvmppc_ops *kvm_ops = NULL; > + int r; > + > /* > * if we have both HV and PR enabled, default is HV > */ > @@ -456,7 +458,10 @@ int kvm_arch_init_vm(struct kvm *kvm, unsigned long type) > return -ENOENT; > > kvm->arch.kvm_ops = kvm_ops; > - return kvmppc_core_init_vm(kvm); > + r = kvmppc_core_init_vm(kvm); > + if (r) > + module_put(kvm->arch.kvm_ops->owner); > + return r; > err_out: > return -EINVAL; > } > -- > 2.34.1 > >