On 22. 5. 26. 17:28, Miaoqian Lin wrote: > 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: f262f28c1470 ("PM / devfreq: event: Add devfreq_event class") > Signed-off-by: Miaoqian Lin <linmq006@xxxxxxxxx> > --- > drivers/devfreq/event/exynos-ppmu.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/devfreq/event/exynos-ppmu.c b/drivers/devfreq/event/exynos-ppmu.c > index 9b849d781116..a443e7c42daf 100644 > --- a/drivers/devfreq/event/exynos-ppmu.c > +++ b/drivers/devfreq/event/exynos-ppmu.c > @@ -519,15 +519,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) { I edited the patch title with 'PM / ' prefix in order to keep the consistent style of title as following: PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events -- Best Regards, Samsung Electronics Chanwoo Choi