lkml.org 
[lkml]   [2019]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2] soc: qcom: smp2p: Add of_node_put() at goto
    Date
    Each iteration of for_each_available_child_of_node() puts the previous
    node, but in the case of a goto from the middle of the loop, there is no
    put, thus causing a memory leak. Hence add an of_node_put() before each
    mid-loop goto.
    Issue found with Coccinelle.

    Signed-off-by: Nishka Dasgupta <nishkadg.linux@gmail.com>
    ---
    Changes in v2:
    - Remove the extra label.
    - Add the of_node_put() statements individually before each goto.

    drivers/soc/qcom/smp2p.c | 13 ++++++++++---
    1 file changed, 10 insertions(+), 3 deletions(-)

    diff --git a/drivers/soc/qcom/smp2p.c b/drivers/soc/qcom/smp2p.c
    index c7300d54e444..c51b392f4000 100644
    --- a/drivers/soc/qcom/smp2p.c
    +++ b/drivers/soc/qcom/smp2p.c
    @@ -501,6 +501,7 @@ static int qcom_smp2p_probe(struct platform_device *pdev)
    entry = devm_kzalloc(&pdev->dev, sizeof(*entry), GFP_KERNEL);
    if (!entry) {
    ret = -ENOMEM;
    + of_node_put(node);
    goto unwind_interfaces;
    }

    @@ -508,19 +509,25 @@ static int qcom_smp2p_probe(struct platform_device *pdev)
    spin_lock_init(&entry->lock);

    ret = of_property_read_string(node, "qcom,entry-name", &entry->name);
    - if (ret < 0)
    + if (ret < 0) {
    + of_node_put(node);
    goto unwind_interfaces;
    + }

    if (of_property_read_bool(node, "interrupt-controller")) {
    ret = qcom_smp2p_inbound_entry(smp2p, entry, node);
    - if (ret < 0)
    + if (ret < 0) {
    + of_node_put(node);
    goto unwind_interfaces;
    + }

    list_add(&entry->node, &smp2p->inbound);
    } else {
    ret = qcom_smp2p_outbound_entry(smp2p, entry, node);
    - if (ret < 0)
    + if (ret < 0) {
    + of_node_put(node);
    goto unwind_interfaces;
    + }

    list_add(&entry->node, &smp2p->outbound);
    }
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-08-08 09:37    [W:7.013 / U:0.172 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site