lkml.org 
[lkml]   [2020]   [Oct]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 082/408] media: rcar_drif: Fix fwnode reference leak when parsing DT
    Date
    From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

    [ Upstream commit cdd4f7824994c9254acc6e415750529ea2d2cfe0 ]

    The fwnode reference corresponding to the endpoint is leaked in an error
    path of the rcar_drif_parse_subdevs() function. Fix it, and reorganize
    fwnode reference handling in the function to release references early,
    simplifying error paths.

    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/platform/rcar_drif.c | 16 +++++-----------
    1 file changed, 5 insertions(+), 11 deletions(-)

    diff --git a/drivers/media/platform/rcar_drif.c b/drivers/media/platform/rcar_drif.c
    index 0f267a237b424..208ff260b0c10 100644
    --- a/drivers/media/platform/rcar_drif.c
    +++ b/drivers/media/platform/rcar_drif.c
    @@ -1223,28 +1223,22 @@ static int rcar_drif_parse_subdevs(struct rcar_drif_sdr *sdr)
    if (!ep)
    return 0;

    + /* Get the endpoint properties */
    + rcar_drif_get_ep_properties(sdr, ep);
    +
    fwnode = fwnode_graph_get_remote_port_parent(ep);
    + fwnode_handle_put(ep);
    if (!fwnode) {
    dev_warn(sdr->dev, "bad remote port parent\n");
    - fwnode_handle_put(ep);
    return -EINVAL;
    }

    sdr->ep.asd.match.fwnode = fwnode;
    sdr->ep.asd.match_type = V4L2_ASYNC_MATCH_FWNODE;
    ret = v4l2_async_notifier_add_subdev(notifier, &sdr->ep.asd);
    - if (ret) {
    - fwnode_handle_put(fwnode);
    - return ret;
    - }
    -
    - /* Get the endpoint properties */
    - rcar_drif_get_ep_properties(sdr, ep);
    -
    fwnode_handle_put(fwnode);
    - fwnode_handle_put(ep);

    - return 0;
    + return ret;
    }

    /* Check if the given device is the primary bond */
    --
    2.25.1


    \
     
     \ /
      Last update: 2020-10-27 18:42    [W:2.936 / U:0.084 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site