rt2x00usb: check USB's request error code in rt2800usb_autorun_detect()
[cascardo/linux.git] / drivers / net / wireless / rt2x00 / rt2800usb.c
index 8444313..e692e5f 100644 (file)
@@ -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;