Re: FAILED: patch "[PATCH] rtlwifi: Fix fallback firmware loading" failed to apply to 4.12-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2017-09-07 16:32 +0200, gregkh@xxxxxxxxxxxxxxxxxxx wrote:

> The patch below does not apply to the 4.12-stable tree.
> If someone wants it applied there, or to any other stable or longterm
> tree, then please email the backport, including the original git commit
> id to <stable@xxxxxxxxxxxxxxx>.

Same as for 4.13-stable, I suggest to include commit f2764f61fa10
("rtlwifi: Fix memory leak when firmware request fails") before
1d9b168d8ea9.

Cheers,
       Sven


> ------------------ original commit in Linus's tree ------------------
>
>>From 1d9b168d8ea9a0f51947d0e2f84856e77d2fe7ff Mon Sep 17 00:00:00 2001
> From: Sven Joachim <svenjoac@xxxxxx>
> Date: Mon, 31 Jul 2017 18:10:45 +0200
> Subject: [PATCH] rtlwifi: Fix fallback firmware loading
>
> Commit f70e4df2b384 ("rtlwifi: Add code to read new versions of
> firmware") added code to load an old firmware file if the new one is
> not available.  Unfortunately that code is never reached because
> request_firmware_nowait() does not wait for the firmware to show up
> and returns 0 even if the file is not there.
>
> Use the existing fallback mechanism introduced by commit 62009b7f1279
> ("rtlwifi: rtl8192cu: Add new firmware") instead.
>
> Fixes: f70e4df2b384 ("rtlwifi: Add code to read new versions of firmware")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Sven Joachim <svenjoac@xxxxxx>
> Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxx>
>
> diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
> index 56c05c4e1499..f47d839f388d 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/sw.c
> @@ -187,18 +187,10 @@ int rtl8723be_init_sw_vars(struct ieee80211_hw *hw)
>  				      rtlpriv->io.dev, GFP_KERNEL, hw,
>  				      rtl_fw_cb);
>  	if (err) {
> -		/* Failed to get firmware. Check if old version available */
> -		fw_name = "rtlwifi/rtl8723befw.bin";
> -		pr_info("Using firmware %s\n", fw_name);
> -		err = request_firmware_nowait(THIS_MODULE, 1, fw_name,
> -					      rtlpriv->io.dev, GFP_KERNEL, hw,
> -					      rtl_fw_cb);
> -		if (err) {
> -			pr_err("Failed to request firmware!\n");
> -			vfree(rtlpriv->rtlhal.pfirmware);
> -			rtlpriv->rtlhal.pfirmware = NULL;
> -			return 1;
> -		}
> +		pr_err("Failed to request firmware!\n");
> +		vfree(rtlpriv->rtlhal.pfirmware);
> +		rtlpriv->rtlhal.pfirmware = NULL;
> +		return 1;
>  	}
>  	return 0;
>  }
> @@ -289,6 +281,7 @@ static const struct rtl_hal_cfg rtl8723be_hal_cfg = {
>  	.bar_id = 2,
>  	.write_readback = true,
>  	.name = "rtl8723be_pci",
> +	.alt_fw_name = "rtlwifi/rtl8723befw.bin",
>  	.ops = &rtl8723be_hal_ops,
>  	.mod_params = &rtl8723be_mod_params,
>  	.maps[SYS_ISO_CTRL] = REG_SYS_ISO_CTRL,
> diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
> index ec2d577ba85b..5925edf7877f 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/sw.c
> @@ -216,18 +216,10 @@ int rtl8821ae_init_sw_vars(struct ieee80211_hw *hw)
>  				      rtlpriv->io.dev, GFP_KERNEL, hw,
>  				      rtl_fw_cb);
>  	if (err) {
> -		/* Failed to get firmware. Check if old version available */
> -		fw_name = "rtlwifi/rtl8821aefw.bin";
> -		pr_info("Using firmware %s\n", fw_name);
> -		err = request_firmware_nowait(THIS_MODULE, 1, fw_name,
> -					      rtlpriv->io.dev, GFP_KERNEL, 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;
> -		}
> +		pr_err("Failed to request normal firmware!\n");
> +		vfree(rtlpriv->rtlhal.wowlan_firmware);
> +		vfree(rtlpriv->rtlhal.pfirmware);
> +		return 1;
>  	}
>  	/*load wowlan firmware*/
>  	pr_info("Using firmware %s\n", wowlan_fw_name);
> @@ -331,6 +323,7 @@ static const struct rtl_hal_cfg rtl8821ae_hal_cfg = {
>  	.bar_id = 2,
>  	.write_readback = true,
>  	.name = "rtl8821ae_pci",
> +	.alt_fw_name = "rtlwifi/rtl8821aefw.bin",
>  	.ops = &rtl8821ae_hal_ops,
>  	.mod_params = &rtl8821ae_mod_params,
>  	.maps[SYS_ISO_CTRL] = REG_SYS_ISO_CTRL,



[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]