lkml.org 
[lkml]   [2022]   [Jul]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 20/58] PM / devfreq: exynos-ppmu: Fix refcount leak in of_get_devfreq_events
    Date
    From: Miaoqian Lin <linmq006@gmail.com>

    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: f262f28c1470 ("PM / devfreq: event: Add devfreq_event class")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/devfreq/event/exynos-ppmu.c | 8 ++++++--
    1 file changed, 6 insertions(+), 2 deletions(-)

    --- a/drivers/devfreq/event/exynos-ppmu.c
    +++ b/drivers/devfreq/event/exynos-ppmu.c
    @@ -514,15 +514,19 @@ static int of_get_devfreq_events(struct

    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) {

    \
     
     \ /
      Last update: 2022-07-05 14:11    [W:3.981 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site