* [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest()
@ 2021-09-28 12:45 Nathan Lynch
2021-09-28 18:57 ` Tyrel Datwyler
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Nathan Lynch @ 2021-09-28 12:45 UTC (permalink / raw)
To: linuxppc-dev; +Cc: srikar, npiggin
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(-)
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest()
2021-09-28 12:45 [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest() Nathan Lynch
@ 2021-09-28 18:57 ` Tyrel Datwyler
2021-09-29 7:29 ` Srikar Dronamraju
2021-10-11 12:06 ` Michael Ellerman
2 siblings, 0 replies; 4+ messages in thread
From: Tyrel Datwyler @ 2021-09-28 18:57 UTC (permalink / raw)
To: Nathan Lynch, linuxppc-dev; +Cc: srikar, npiggin
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>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest()
2021-09-28 12:45 [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest() Nathan Lynch
2021-09-28 18:57 ` Tyrel Datwyler
@ 2021-09-29 7:29 ` Srikar Dronamraju
2021-10-11 12:06 ` Michael Ellerman
2 siblings, 0 replies; 4+ messages in thread
From: Srikar Dronamraju @ 2021-09-29 7:29 UTC (permalink / raw)
To: Nathan Lynch; +Cc: linuxppc-dev, npiggin
* 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
>
--
Thanks and Regards
Srikar Dronamraju
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest()
2021-09-28 12:45 [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest() Nathan Lynch
2021-09-28 18:57 ` Tyrel Datwyler
2021-09-29 7:29 ` Srikar Dronamraju
@ 2021-10-11 12:06 ` Michael Ellerman
2 siblings, 0 replies; 4+ messages in thread
From: Michael Ellerman @ 2021-10-11 12:06 UTC (permalink / raw)
To: linuxppc-dev, Nathan Lynch; +Cc: srikar, npiggin
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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2021-10-11 12:11 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28 12:45 [PATCH] powerpc: fix unbalanced node refcount in check_kvm_guest() Nathan Lynch
2021-09-28 18:57 ` Tyrel Datwyler
2021-09-29 7:29 ` Srikar Dronamraju
2021-10-11 12:06 ` Michael Ellerman
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.