lkml.org 
[lkml]   [2017]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.13 46/47] rtlwifi: Fix memory leak when firmware request fails
    Date
    4.13-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Souptick Joarder <jrdr.linux@gmail.com>

    commit f2764f61fa10593204b0c5e4e9a68dba02112e50 upstream.

    This patch will fix memory leak when firmware request fails

    Signed-off-by: Souptick Joarder <jrdr.linux@gmail.com>
    Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
    Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
    Cc: Sven Joachim <svenjoac@gmx.de>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c | 4 ++++
    drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8192ee/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c | 2 ++
    drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c | 6 ++++++
    9 files changed, 24 insertions(+)

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8188ee/sw.c
    @@ -175,6 +175,8 @@ int rtl88e_init_sw_vars(struct ieee80211
    rtl_fw_cb);
    if (err) {
    pr_info("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/sw.c
    @@ -176,6 +176,8 @@ int rtl92c_init_sw_vars(struct ieee80211
    rtl_fw_cb);
    if (err) {
    pr_err("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/sw.c
    @@ -85,6 +85,10 @@ static int rtl92cu_init_sw_vars(struct i
    err = request_firmware_nowait(THIS_MODULE, 1,
    fw_name, rtlpriv->io.dev,
    GFP_KERNEL, hw, rtl_fw_cb);
    + if (err) {
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    + }
    return err;
    }

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192de/sw.c
    @@ -183,6 +183,8 @@ static int rtl92d_init_sw_vars(struct ie
    rtl_fw_cb);
    if (err) {
    pr_err("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192ee/sw.c
    @@ -177,6 +177,8 @@ int rtl92ee_init_sw_vars(struct ieee8021
    rtl_fw_cb);
    if (err) {
    pr_err("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8192se/sw.c
    @@ -216,6 +216,8 @@ static int rtl92s_init_sw_vars(struct ie
    rtl92se_fw_cb);
    if (err) {
    pr_err("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }

    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723ae/sw.c
    @@ -184,6 +184,8 @@ int rtl8723e_init_sw_vars(struct ieee802
    rtl_fw_cb);
    if (err) {
    pr_err("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }
    return 0;
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
    @@ -195,6 +195,8 @@ int rtl8723be_init_sw_vars(struct ieee80
    rtl_fw_cb);
    if (err) {
    pr_err("Failed to request firmware!\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }
    }
    --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
    +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
    @@ -196,6 +196,8 @@ int rtl8821ae_init_sw_vars(struct ieee80
    rtlpriv->rtlhal.wowlan_firmware = vzalloc(0x8000);
    if (!rtlpriv->rtlhal.wowlan_firmware) {
    pr_err("Can't alloc buffer for wowlan fw.\n");
    + vfree(rtlpriv->rtlhal.pfirmware);
    + rtlpriv->rtlhal.pfirmware = NULL;
    return 1;
    }

    @@ -222,6 +224,8 @@ int rtl8821ae_init_sw_vars(struct ieee80
    rtl_fw_cb);
    if (err) {
    pr_err("Failed to request normal firmware!\n");
    + vfree(rtlpriv->rtlhal.wowlan_firmware);
    + vfree(rtlpriv->rtlhal.pfirmware);
    return 1;
    }
    }
    @@ -233,6 +237,8 @@ int rtl8821ae_init_sw_vars(struct ieee80
    rtl_wowlan_fw_cb);
    if (err) {
    pr_err("Failed to request wowlan firmware!\n");
    + vfree(rtlpriv->rtlhal.wowlan_firmware);
    + vfree(rtlpriv->rtlhal.pfirmware);
    return 1;
    }
    return 0;

    \
     
     \ /
      Last update: 2017-09-08 15:22    [W:4.031 / U:0.212 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site