Message ID | 20210928124550.132020-1-nathanl@linux.ibm.com (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | powerpc: fix unbalanced node refcount in check_kvm_guest() | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/github-powerpc_ppctests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_selftests | success | Successfully ran 8 jobs. |
snowpatch_ozlabs/github-powerpc_clang | success | Successfully ran 7 jobs. |
snowpatch_ozlabs/github-powerpc_sparse | success | Successfully ran 4 jobs. |
snowpatch_ozlabs/github-powerpc_kernel_qemu | success | Successfully ran 24 jobs. |
On 9/28/21 5:45 AM, Nathan Lynch wrote: > When check_kvm_guest() succeeds in looking up a /hypervisor OF node, it > returns without performing a matching put for the lookup, leaving the > node's reference count elevated. > > Add the necessary call to of_node_put(), rearranging the code slightly to > avoid repetition or goto. > > Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> > Fixes: 107c55005fbd ("powerpc/pseries: Add KVM guest doorbell restrictions") Reviewed-by: Tyrel Datwyler <tyreld@linux.ibm.com>
* Nathan Lynch <nathanl@linux.ibm.com> [2021-09-28 07:45:50]: > When check_kvm_guest() succeeds in looking up a /hypervisor OF node, it > returns without performing a matching put for the lookup, leaving the > node's reference count elevated. > > Add the necessary call to of_node_put(), rearranging the code slightly to > avoid repetition or goto. > Looks good to me. I do see few other cases where we call of_find_node calls without of_node_put(). Some of them that I saw were in find_legacy_serial_ports() in arch/powerpc/kernel/legacy_serial.c proc_ppc64_create in arch/powerpc/proc/powerpc.c update_events_in_group in arch/powerpc/perf/imc-pmu.c cell_iommu_init_disabled in arch/powerpc/platforms/cell/iommu.c cell_publish_devices in arch/powerpc/platforms/cell/setup.c spufs_init_isolated_loader in arch/powerpc/platforms/cell/spufs/inode.c holly_init_pci / holly_restart and holly_init_IRQ in arch/powerpc/platforms/embedded6xx/holly.c Reviewed-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> > Fixes: 107c55005fbd ("powerpc/pseries: Add KVM guest doorbell restrictions") > --- > arch/powerpc/kernel/firmware.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/kernel/firmware.c b/arch/powerpc/kernel/firmware.c > index c7022c41cc31..20328f72f9f2 100644 > --- a/arch/powerpc/kernel/firmware.c > +++ b/arch/powerpc/kernel/firmware.c > @@ -31,11 +31,10 @@ int __init check_kvm_guest(void) > if (!hyper_node) > return 0; > > - if (!of_device_is_compatible(hyper_node, "linux,kvm")) > - return 0; > - > - static_branch_enable(&kvm_guest); > + if (of_device_is_compatible(hyper_node, "linux,kvm")) > + static_branch_enable(&kvm_guest); > > + of_node_put(hyper_node); > return 0; > } > core_initcall(check_kvm_guest); // before kvm_guest_init() > -- > 2.31.1 >
On Tue, 28 Sep 2021 07:45:50 -0500, Nathan Lynch wrote: > When check_kvm_guest() succeeds in looking up a /hypervisor OF node, it > returns without performing a matching put for the lookup, leaving the > node's reference count elevated. > > Add the necessary call to of_node_put(), rearranging the code slightly to > avoid repetition or goto. > > [...] Applied to powerpc/next. [1/1] powerpc: fix unbalanced node refcount in check_kvm_guest() https://git.kernel.org/powerpc/c/56537faf8821e361d739fc5ff58c9c40f54a1d4c cheers
diff --git a/arch/powerpc/kernel/firmware.c b/arch/powerpc/kernel/firmware.c index c7022c41cc31..20328f72f9f2 100644 --- a/arch/powerpc/kernel/firmware.c +++ b/arch/powerpc/kernel/firmware.c @@ -31,11 +31,10 @@ int __init check_kvm_guest(void) if (!hyper_node) return 0; - if (!of_device_is_compatible(hyper_node, "linux,kvm")) - return 0; - - static_branch_enable(&kvm_guest); + if (of_device_is_compatible(hyper_node, "linux,kvm")) + static_branch_enable(&kvm_guest); + of_node_put(hyper_node); return 0; } core_initcall(check_kvm_guest); // before kvm_guest_init()
When check_kvm_guest() succeeds in looking up a /hypervisor OF node, it returns without performing a matching put for the lookup, leaving the node's reference count elevated. Add the necessary call to of_node_put(), rearranging the code slightly to avoid repetition or goto. Signed-off-by: Nathan Lynch <nathanl@linux.ibm.com> Fixes: 107c55005fbd ("powerpc/pseries: Add KVM guest doorbell restrictions") --- arch/powerpc/kernel/firmware.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-)