* [PATCH] powerpc/pseries: Hold reference and fix refcount leak bugs
@ 2022-06-21 11:17 Liang He
2022-09-09 12:07 ` Michael Ellerman
0 siblings, 1 reply; 2+ messages in thread
From: Liang He @ 2022-06-21 11:17 UTC (permalink / raw)
To: mpe, benh, paulus, osalvador, npiggin, linuxppc-dev, windhl
In pseries_cpuhp_cache_use_count() and pseries_cpuhp_detach_nodes(),
we need carefully hold the reference returned by
of_find_next_cache_node() and use it to call of_node_put() to keep
refcount balance.
Signed-off-by: Liang He <windhl@126.com>
---
arch/powerpc/platforms/pseries/hotplug-cpu.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c
index 0f8cd8b06432..e0a7ac5db15d 100644
--- a/arch/powerpc/platforms/pseries/hotplug-cpu.c
+++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c
@@ -619,17 +619,21 @@ static ssize_t dlpar_cpu_add(u32 drc_index)
static unsigned int pseries_cpuhp_cache_use_count(const struct device_node *cachedn)
{
unsigned int use_count = 0;
- struct device_node *dn;
+ struct device_node *dn, *tn;
WARN_ON(!of_node_is_type(cachedn, "cache"));
for_each_of_cpu_node(dn) {
- if (of_find_next_cache_node(dn) == cachedn)
+ tn = of_find_next_cache_node(dn);
+ of_node_put(tn);
+ if (tn == cachedn)
use_count++;
}
for_each_node_by_type(dn, "cache") {
- if (of_find_next_cache_node(dn) == cachedn)
+ tn = of_find_next_cache_node(dn);
+ of_node_put(tn);
+ if (tn == cachedn)
use_count++;
}
@@ -649,10 +653,13 @@ static int pseries_cpuhp_detach_nodes(struct device_node *cpudn)
dn = cpudn;
while ((dn = of_find_next_cache_node(dn))) {
- if (pseries_cpuhp_cache_use_count(dn) > 1)
+ if (pseries_cpuhp_cache_use_count(dn) > 1) {
+ of_node_put(dn);
break;
+ }
ret = of_changeset_detach_node(&cs, dn);
+ of_node_put(dn);
if (ret)
goto out;
}
--
2.25.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] powerpc/pseries: Hold reference and fix refcount leak bugs
2022-06-21 11:17 [PATCH] powerpc/pseries: Hold reference and fix refcount leak bugs Liang He
@ 2022-09-09 12:07 ` Michael Ellerman
0 siblings, 0 replies; 2+ messages in thread
From: Michael Ellerman @ 2022-09-09 12:07 UTC (permalink / raw)
To: linuxppc-dev, paulus, osalvador, Liang He, npiggin, benh, mpe
On Tue, 21 Jun 2022 19:17:01 +0800, Liang He wrote:
> In pseries_cpuhp_cache_use_count() and pseries_cpuhp_detach_nodes(),
> we need carefully hold the reference returned by
> of_find_next_cache_node() and use it to call of_node_put() to keep
> refcount balance.
>
>
Applied to powerpc/next.
[1/1] powerpc/pseries: Hold reference and fix refcount leak bugs
https://git.kernel.org/powerpc/c/6ec4836fa15a0ff02e3a382ad6b1920c728a8c95
cheers
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-09-09 12:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-21 11:17 [PATCH] powerpc/pseries: Hold reference and fix refcount leak bugs Liang He
2022-09-09 12:07 ` 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.