brcmfmac: kill URB when request timed out
Subsystems (3)
PATCH 1/1 brcmfmac: kill URB when request timed out
Kill the submitted URB in brcmf_usb_dl_cmd if the request timed out. This assures the URB is never submitted twice. It also prevents a possible use-after-free of the URB transfer buffer if a timeout occurs.
---
For a discussion about this patch and the underlying problem, see the mails with as subject "[PATCH] brcmfmac: unlink URB when request timed out".
drivers/net/wireless/brcm80211/brcmfmac/usb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
drivers/net/wireless/brcm80211/brcmfmac/usb.c +4 -2
@@ -738,10 +738,12 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info *devinfo, u8 cmd, goto finalize; } -if (!brcmf_usb_ioctl_resp_wait (devinfo)) +if (!brcmf_usb_ioctl_resp_wait (devinfo)) { +usb_kill_urb (devinfo->ctl_urb); ret = -ETIMEDOUT ; -else + }else {memcpy (buffer, tmpbuf, buflen); + } finalize:kfree (tmpbuf);
Signature · 1 line
1.7.10.4
Quoted 4 lines · Mathy Vanhoef
Kill the submitted URB in
brcmf_usb_dl_cmdif the request timed out. This assures the URB is never submitted twice. It also prevents a possible use-after-free of the URB transfer buffer if a timeout occurs.
Quoted 28 lines
Signed-off-by Mathy Vanhoef <[email protected]>---
For a discussion about this patch and the underlying problem, see the mails with as subject "[PATCH] brcmfmac: unlink URB when request timed out".drivers/net/wireless/brcm80211/brcmfmac/usb.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)drivers/net/wireless/brcm80211/brcmfmac/usb.c +4
-2@@ -738,10 +738,12 @@ static int brcmf_usb_dl_cmd(struct brcmf_usbdev_info *devinfo, u8 cmd, goto finalize; } -if (!brcmf_usb_ioctl_resp_wait (devinfo)) +if (!brcmf_usb_ioctl_resp_wait (devinfo)) { +usb_kill_urb (devinfo->ctl_urb); ret = -ETIMEDOUT ; -else + }else {memcpy (buffer, tmpbuf, buflen); + } finalize:kfree (tmpbuf);