Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bdecd912 authored by Miaoqian Lin's avatar Miaoqian Lin Committed by Greg Kroah-Hartman
Browse files

PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events



commit f44b799603a9b5d2e375b0b2d54dd0b791eddfc2 upstream.

of_get_child_by_name() returns a node pointer with refcount
incremented, we should use of_node_put() on it when done.
This function only calls of_node_put() in normal path,
missing it in error paths.
Add missing of_node_put() to avoid refcount leak.

Fixes: f262f28c ("PM / devfreq: event: Add devfreq_event class")
Signed-off-by: default avatarMiaoqian Lin <linmq006@gmail.com>
Signed-off-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e1284ec4
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -514,15 +514,19 @@ static int of_get_devfreq_events(struct device_node *np,

	count = of_get_child_count(events_np);
	desc = devm_kcalloc(dev, count, sizeof(*desc), GFP_KERNEL);
	if (!desc)
	if (!desc) {
		of_node_put(events_np);
		return -ENOMEM;
	}
	info->num_events = count;

	of_id = of_match_device(exynos_ppmu_id_match, dev);
	if (of_id)
		info->ppmu_type = (enum exynos_ppmu_type)of_id->data;
	else
	else {
		of_node_put(events_np);
		return -EINVAL;
	}

	j = 0;
	for_each_child_of_node(events_np, node) {