]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: brcm80211: fmac: Add error handling for brcmf_usb_dl_writeimage()
authorWentao Liang <vulab@iscas.ac.cn>
Tue, 22 Apr 2025 04:22:02 +0000 (12:22 +0800)
committerJohannes Berg <johannes.berg@intel.com>
Wed, 23 Apr 2025 12:59:04 +0000 (14:59 +0200)
The function brcmf_usb_dl_writeimage() calls the function
brcmf_usb_dl_cmd() but dose not check its return value. The
'state.state' and the 'state.bytes' are uninitialized if the
function brcmf_usb_dl_cmd() fails. It is dangerous to use
uninitialized variables in the conditions.

Add error handling for brcmf_usb_dl_cmd() to jump to error
handling path if the brcmf_usb_dl_cmd() fails and the
'state.state' and the 'state.bytes' are uninitialized.

Improve the error message to report more detailed error
information.

Fixes: 71bb244ba2fd ("brcm80211: fmac: add USB support for bcm43235/6/8 chipsets")
Cc: stable@vger.kernel.org # v3.4+
Signed-off-by: Wentao Liang <vulab@iscas.ac.cn>
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Link: https://patch.msgid.link/20250422042203.2259-1-vulab@iscas.ac.cn
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c

index 2821c27f317ee094198f78b02b85e94256844d62..d06c724f63d9c6e7b61a90c7646a9ef57d0e3afb 100644 (file)
@@ -896,14 +896,16 @@ brcmf_usb_dl_writeimage(struct brcmf_usbdev_info *devinfo, u8 *fw, int fwlen)
        }
 
        /* 1) Prepare USB boot loader for runtime image */
-       brcmf_usb_dl_cmd(devinfo, DL_START, &state, sizeof(state));
+       err = brcmf_usb_dl_cmd(devinfo, DL_START, &state, sizeof(state));
+       if (err)
+               goto fail;
 
        rdlstate = le32_to_cpu(state.state);
        rdlbytes = le32_to_cpu(state.bytes);
 
        /* 2) Check we are in the Waiting state */
        if (rdlstate != DL_WAITING) {
-               brcmf_err("Failed to DL_START\n");
+               brcmf_err("Invalid DL state: %u\n", rdlstate);
                err = -EINVAL;
                goto fail;
        }