lkml.org 
[lkml]   [2019]   [Dec]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 133/162] pinctrl: samsung: Fix device node refcount leaks in S3C64xx wakeup controller init
    Date
    From: Krzysztof Kozlowski <krzk@kernel.org>

    [ Upstream commit 7f028caadf6c37580d0f59c6c094ed09afc04062 ]

    In s3c64xx_eint_eint0_init() the for_each_child_of_node() loop is used
    with a break to find a matching child node. Although each iteration of
    for_each_child_of_node puts the previous node, but early exit from loop
    misses it. This leads to leak of device node.

    Cc: <stable@vger.kernel.org>
    Fixes: 61dd72613177 ("pinctrl: Add pinctrl-s3c64xx driver")
    Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/pinctrl/samsung/pinctrl-s3c64xx.c | 3 +++
    1 file changed, 3 insertions(+)

    diff --git a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
    index 43407ab248f51..0cd9f3a7bb11a 100644
    --- a/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
    +++ b/drivers/pinctrl/samsung/pinctrl-s3c64xx.c
    @@ -713,6 +713,7 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d)
    data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
    if (!data) {
    dev_err(dev, "could not allocate memory for wkup eint data\n");
    + of_node_put(eint0_np);
    return -ENOMEM;
    }
    data->drvdata = d;
    @@ -723,6 +724,7 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d)
    irq = irq_of_parse_and_map(eint0_np, i);
    if (!irq) {
    dev_err(dev, "failed to get wakeup EINT IRQ %d\n", i);
    + of_node_put(eint0_np);
    return -ENXIO;
    }

    @@ -730,6 +732,7 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d)
    s3c64xx_eint0_handlers[i],
    data);
    }
    + of_node_put(eint0_np);

    bank = d->pin_banks;
    for (i = 0; i < d->nr_banks; ++i, ++bank) {
    --
    2.20.1


    \
     
     \ /
      Last update: 2019-12-19 20:10    [W:4.662 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site