lkml.org 
[lkml]   [2019]   [Jul]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.2 027/413] media: venus: firmware: fix leaked of_node references
    Date
    [ Upstream commit 2c41cc0be07b5ee2f1167f41cd8a86fc5b53d82c ]

    The call to of_parse_phandle returns a node pointer with refcount
    incremented thus it must be explicitly decremented after the last
    usage.

    Detected by coccinelle with the following warnings:
    drivers/media/platform/qcom/venus/firmware.c:90:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
    drivers/media/platform/qcom/venus/firmware.c:94:2-8: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.
    drivers/media/platform/qcom/venus/firmware.c:128:1-7: ERROR: missing of_node_put; acquired a node pointer with refcount incremented on line 82, but without a corresponding object release within this function.

    Signed-off-by: Wen Yang <wen.yang99@zte.com.cn>
    Acked-by: Stanimir Varbanov <stanimir.varbanov@linaro.org>
    Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/media/platform/qcom/venus/firmware.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c
    index 1eba23409ff3..d3d1748a7ef6 100644
    --- a/drivers/media/platform/qcom/venus/firmware.c
    +++ b/drivers/media/platform/qcom/venus/firmware.c
    @@ -78,11 +78,11 @@ static int venus_load_fw(struct venus_core *core, const char *fwname,

    ret = of_address_to_resource(node, 0, &r);
    if (ret)
    - return ret;
    + goto err_put_node;

    ret = request_firmware(&mdt, fwname, dev);
    if (ret < 0)
    - return ret;
    + goto err_put_node;

    fw_size = qcom_mdt_get_size(mdt);
    if (fw_size < 0) {
    @@ -116,6 +116,8 @@ static int venus_load_fw(struct venus_core *core, const char *fwname,
    memunmap(mem_va);
    err_release_fw:
    release_firmware(mdt);
    +err_put_node:
    + of_node_put(node);
    return ret;
    }

    --
    2.20.1


    \
     
     \ /
      Last update: 2019-07-24 21:24    [W:4.513 / U:0.496 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site