wifi: rtw88: add missing unwind goto for __rtw_download_firmware()
authorPing-Ke Shih <pkshih@realtek.com>
Wed, 7 Jun 2023 01:27:41 +0000 (09:27 +0800)
committerKalle Valo <kvalo@kernel.org>
Tue, 13 Jun 2023 08:36:59 +0000 (11:36 +0300)
This flaw is detected by smatch:
  drivers/net/wireless/realtek/rtw88/mac.c:748 __rtw_download_firmware()
  warn: missing unwind goto?

Though most things of dlfw_fail have been done by
download_firmware_end_flow() and wlan_cpu_enable(), an exception is that
download_firmware_end_flow() clear BIT_MCUFWDL_EN bit conditionally.
So, make this change to clear the bit.

Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
Closes: https://lore.kernel.org/r/202306052310.OVhcUjZ3-lkp@intel.com/
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230607012741.10353-1-pkshih@realtek.com
drivers/net/wireless/realtek/rtw88/mac.c

index a168f36..298663b 100644 (file)
@@ -794,8 +794,10 @@ static int __rtw_download_firmware(struct rtw_dev *rtwdev,
 
        wlan_cpu_enable(rtwdev, true);
 
-       if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp))
-               return -EBUSY;
+       if (!ltecoex_reg_write(rtwdev, 0x38, ltecoex_bckp)) {
+               ret = -EBUSY;
+               goto dlfw_fail;
+       }
 
        ret = download_firmware_validate(rtwdev);
        if (ret)