lkml.org 
[lkml]   [2022]   [Jun]   [13]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 363/411] net: altera: Fix refcount leak in altera_tse_mdio_create
    Date
    From: Miaoqian Lin <linmq006@gmail.com>

    [ Upstream commit 11ec18b1d8d92b9df307d31950dcba0b3dd7283c ]

    Every iteration of for_each_child_of_node() decrements
    the reference count of the previous node.
    When break from a for_each_child_of_node() loop,
    we need to explicitly call of_node_put() on the child node when
    not need anymore.
    Add missing of_node_put() to avoid refcount leak.

    Fixes: bbd2190ce96d ("Altera TSE: Add main and header file for Altera Ethernet Driver")
    Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
    Link: https://lore.kernel.org/r/20220607041144.7553-1-linmq006@gmail.com
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/altera/altera_tse_main.c | 6 +++++-
    1 file changed, 5 insertions(+), 1 deletion(-)

    diff --git a/drivers/net/ethernet/altera/altera_tse_main.c b/drivers/net/ethernet/altera/altera_tse_main.c
    index 1f8c3b669dc1..f36536114790 100644
    --- a/drivers/net/ethernet/altera/altera_tse_main.c
    +++ b/drivers/net/ethernet/altera/altera_tse_main.c
    @@ -163,7 +163,8 @@ static int altera_tse_mdio_create(struct net_device *dev, unsigned int id)
    mdio = mdiobus_alloc();
    if (mdio == NULL) {
    netdev_err(dev, "Error allocating MDIO bus\n");
    - return -ENOMEM;
    + ret = -ENOMEM;
    + goto put_node;
    }

    mdio->name = ALTERA_TSE_RESOURCE_NAME;
    @@ -180,6 +181,7 @@ static int altera_tse_mdio_create(struct net_device *dev, unsigned int id)
    mdio->id);
    goto out_free_mdio;
    }
    + of_node_put(mdio_node);

    if (netif_msg_drv(priv))
    netdev_info(dev, "MDIO bus %s: created\n", mdio->id);
    @@ -189,6 +191,8 @@ static int altera_tse_mdio_create(struct net_device *dev, unsigned int id)
    out_free_mdio:
    mdiobus_free(mdio);
    mdio = NULL;
    +put_node:
    + of_node_put(mdio_node);
    return ret;
    }

    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-13 13:47    [W:2.068 / U:0.380 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site