mirror of https://gitee.com/openkylin/linux.git
rtlwifi: Fix memory leak when firmware request fails
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>
This commit is contained in:
parent
4de95fc5fa
commit
f2764f61fa
|
@ -175,6 +175,8 @@ int rtl88e_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl_fw_cb);
|
||||
if (err) {
|
||||
pr_info("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -176,6 +176,8 @@ int rtl92c_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl_fw_cb);
|
||||
if (err) {
|
||||
pr_err("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -85,6 +85,10 @@ static int rtl92cu_init_sw_vars(struct ieee80211_hw *hw)
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
|
@ -183,6 +183,8 @@ static int rtl92d_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl_fw_cb);
|
||||
if (err) {
|
||||
pr_err("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -177,6 +177,8 @@ int rtl92ee_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl_fw_cb);
|
||||
if (err) {
|
||||
pr_err("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -216,6 +216,8 @@ static int rtl92s_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl92se_fw_cb);
|
||||
if (err) {
|
||||
pr_err("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -184,6 +184,8 @@ int rtl8723e_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl_fw_cb);
|
||||
if (err) {
|
||||
pr_err("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
@ -195,6 +195,8 @@ int rtl8723be_init_sw_vars(struct ieee80211_hw *hw)
|
|||
rtl_fw_cb);
|
||||
if (err) {
|
||||
pr_err("Failed to request firmware!\n");
|
||||
vfree(rtlpriv->rtlhal.pfirmware);
|
||||
rtlpriv->rtlhal.pfirmware = NULL;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -196,6 +196,8 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw)
|
|||
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 ieee80211_hw *hw)
|
|||
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 ieee80211_hw *hw)
|
|||
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;
|
||||
|
|
Loading…
Reference in New Issue