rt2x00usb: check USB's request error code in rt2800usb_autorun_detect()
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>
This commit is contained in:
parent
e4fcfaf802
commit
92d5e2456d
|
@ -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)
|
||||
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue