Skip to content

Commit

Permalink
rt2x00usb: check USB's request error code in rt2800usb_autorun_detect()
Browse files Browse the repository at this point in the history
rt2800usb_autorun_detect() blindly assumes assumes that it worked while
it could have failed. Check the error code here.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  • Loading branch information
Sebastian Andrzej Siewior authored and Kalle Valo committed Mar 16, 2015
1 parent e4fcfaf commit 92d5e24
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/net/wireless/rt2x00/rt2800usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,7 @@ static int rt2800usb_autorun_detect(struct rt2x00_dev *rt2x00dev)
{
__le32 *reg;
u32 fw_mode;
int ret;

reg = kmalloc(sizeof(*reg), GFP_KERNEL);
if (reg == NULL)
Expand All @@ -242,11 +243,14 @@ static int rt2800usb_autorun_detect(struct rt2x00_dev *rt2x00dev)
* magic value USB_MODE_AUTORUN (0x11) to the device, thus the
* returned value would be invalid.
*/
rt2x00usb_vendor_request(rt2x00dev, USB_DEVICE_MODE,
USB_VENDOR_REQUEST_IN, 0, USB_MODE_AUTORUN,
reg, sizeof(*reg), REGISTER_TIMEOUT_FIRMWARE);
ret = rt2x00usb_vendor_request(rt2x00dev, USB_DEVICE_MODE,
USB_VENDOR_REQUEST_IN, 0,
USB_MODE_AUTORUN, reg, sizeof(*reg),
REGISTER_TIMEOUT_FIRMWARE);
fw_mode = le32_to_cpu(*reg);
kfree(reg);
if (ret < 0)
return ret;

if ((fw_mode & 0x00000003) == 2)
return 1;
Expand Down

0 comments on commit 92d5e24

Please sign in to comment.