lkml.org 
[lkml]   [2021]   [Oct]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 32/39] NFC: digital: fix possible memory leak in digital_tg_listen_mdaa()
    Date
    From: Ziyang Xuan <william.xuanziyang@huawei.com>

    commit 58e7dcc9ca29c14e44267a4d0ea61e3229124907 upstream.

    'params' is allocated in digital_tg_listen_mdaa(), but not free when
    digital_send_cmd() failed, which will cause memory leak. Fix it by
    freeing 'params' if digital_send_cmd() return failed.

    Fixes: 1c7a4c24fbfd ("NFC Digital: Add target NFC-DEP support")
    Signed-off-by: Ziyang Xuan <william.xuanziyang@huawei.com>
    Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/nfc/digital_core.c | 9 +++++++--
    1 file changed, 7 insertions(+), 2 deletions(-)

    --- a/net/nfc/digital_core.c
    +++ b/net/nfc/digital_core.c
    @@ -286,6 +286,7 @@ int digital_tg_configure_hw(struct nfc_d
    static int digital_tg_listen_mdaa(struct nfc_digital_dev *ddev, u8 rf_tech)
    {
    struct digital_tg_mdaa_params *params;
    + int rc;

    params = kzalloc(sizeof(*params), GFP_KERNEL);
    if (!params)
    @@ -300,8 +301,12 @@ static int digital_tg_listen_mdaa(struct
    get_random_bytes(params->nfcid2 + 2, NFC_NFCID2_MAXSIZE - 2);
    params->sc = DIGITAL_SENSF_FELICA_SC;

    - return digital_send_cmd(ddev, DIGITAL_CMD_TG_LISTEN_MDAA, NULL, params,
    - 500, digital_tg_recv_atr_req, NULL);
    + rc = digital_send_cmd(ddev, DIGITAL_CMD_TG_LISTEN_MDAA, NULL, params,
    + 500, digital_tg_recv_atr_req, NULL);
    + if (rc)
    + kfree(params);
    +
    + return rc;
    }

    static int digital_tg_listen_md(struct nfc_digital_dev *ddev, u8 rf_tech)

    \
     
     \ /
      Last update: 2021-10-18 15:29    [W:3.286 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site