Commit f44b7996 authored by Miaoqian Lin's avatar Miaoqian Lin Committed by Chanwoo Choi

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

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>
parent 20e6c3cc
...@@ -519,15 +519,19 @@ static int of_get_devfreq_events(struct device_node *np, ...@@ -519,15 +519,19 @@ static int of_get_devfreq_events(struct device_node *np,
count = of_get_child_count(events_np); count = of_get_child_count(events_np);
desc = devm_kcalloc(dev, count, sizeof(*desc), GFP_KERNEL); desc = devm_kcalloc(dev, count, sizeof(*desc), GFP_KERNEL);
if (!desc) if (!desc) {
of_node_put(events_np);
return -ENOMEM; return -ENOMEM;
}
info->num_events = count; info->num_events = count;
of_id = of_match_device(exynos_ppmu_id_match, dev); of_id = of_match_device(exynos_ppmu_id_match, dev);
if (of_id) if (of_id)
info->ppmu_type = (enum exynos_ppmu_type)of_id->data; info->ppmu_type = (enum exynos_ppmu_type)of_id->data;
else else {
of_node_put(events_np);
return -EINVAL; return -EINVAL;
}
j = 0; j = 0;
for_each_child_of_node(events_np, node) { for_each_child_of_node(events_np, node) {
......
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