Commit 605c27f3 authored by Liang He's avatar Liang He Committed by Michael Ellerman

powerpc/powernv: Add missing of_node_put()s

In these driver init functions, there are two kinds of errors:

(1) missing of_put_node() for of_find_compatible_node()'s returned
    pointer (refcount incremented)  in fail path or when it is not
    used anymore.
(2) missing of_put_node() for 'for_each_xxx' loop's break
Signed-off-by: default avatarLiang He <windhl@126.com>
[mpe: Use out_put_xxx goto label naming]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20220620132553.4073863-1-windhl@126.com
parent afa6a472
......@@ -1419,6 +1419,7 @@ static int __init pnv_parse_cpuidle_dt(void)
kfree(temp_u32);
kfree(temp_u64);
kfree(temp_string);
of_node_put(np);
return rc;
}
......
......@@ -348,6 +348,8 @@ static int __init create_opalcore(void)
if (!dn || ret)
pr_warn("WARNING: Failed to read OPAL base & entry values\n");
of_node_put(dn);
/* Use count to keep track of the program headers */
count = 0;
......
......@@ -153,7 +153,7 @@ void __init opal_powercap_init(void)
pcaps = kcalloc(of_get_child_count(powercap), sizeof(*pcaps),
GFP_KERNEL);
if (!pcaps)
return;
goto out_put_powercap;
powercap_kobj = kobject_create_and_add("powercap", opal_kobj);
if (!powercap_kobj) {
......@@ -226,6 +226,7 @@ void __init opal_powercap_init(void)
}
i++;
}
of_node_put(powercap);
return;
......@@ -236,6 +237,9 @@ void __init opal_powercap_init(void)
kfree(pcaps[i].pg.name);
}
kobject_put(powercap_kobj);
of_node_put(node);
out_pcaps:
kfree(pcaps);
out_put_powercap:
of_node_put(powercap);
}
......@@ -135,7 +135,7 @@ void __init opal_psr_init(void)
psr_attrs = kcalloc(of_get_child_count(psr), sizeof(*psr_attrs),
GFP_KERNEL);
if (!psr_attrs)
return;
goto out_put_psr;
psr_kobj = kobject_create_and_add("psr", opal_kobj);
if (!psr_kobj) {
......@@ -162,10 +162,14 @@ void __init opal_psr_init(void)
}
i++;
}
of_node_put(psr);
return;
out_kobj:
of_node_put(node);
kobject_put(psr_kobj);
out:
kfree(psr_attrs);
out_put_psr:
of_node_put(psr);
}
......@@ -170,7 +170,7 @@ void __init opal_sensor_groups_init(void)
sgs = kcalloc(of_get_child_count(sg), sizeof(*sgs), GFP_KERNEL);
if (!sgs)
return;
goto out_sg_put;
sg_kobj = kobject_create_and_add("sensor_groups", opal_kobj);
if (!sg_kobj) {
......@@ -222,6 +222,7 @@ void __init opal_sensor_groups_init(void)
}
i++;
}
of_node_put(sg);
return;
......@@ -231,6 +232,9 @@ void __init opal_sensor_groups_init(void)
kfree(sgs[i].sg.attrs);
}
kobject_put(sg_kobj);
of_node_put(node);
out_sgs:
kfree(sgs);
out_sg_put:
of_node_put(sg);
}
......@@ -952,6 +952,8 @@ static void __init opal_imc_init_dev(void)
np = of_find_compatible_node(NULL, NULL, IMC_DTB_COMPAT);
if (np)
of_platform_device_create(np, NULL, NULL);
of_node_put(np);
}
static int kopald(void *unused)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment