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

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
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -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;
}

+2 −0
Original line number Diff line number Diff line
@@ -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;

+5 −1
Original line number Diff line number Diff line
@@ -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);
}
+5 −1
Original line number Diff line number Diff line
@@ -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);
}
+5 −1
Original line number Diff line number Diff line
@@ -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);
}
Loading