aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/zd1201.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/zd1201.c')
-rw-r--r--drivers/net/wireless/zd1201.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/drivers/net/wireless/zd1201.c b/drivers/net/wireless/zd1201.c
index 4941f201d6c8..d39c4178c33a 100644
--- a/drivers/net/wireless/zd1201.c
+++ b/drivers/net/wireless/zd1201.c
@@ -75,8 +75,10 @@ static int zd1201_fw_upload(struct usb_device *dev, int apfw)
75 len = fw_entry->size; 75 len = fw_entry->size;
76 76
77 buf = kmalloc(1024, GFP_ATOMIC); 77 buf = kmalloc(1024, GFP_ATOMIC);
78 if (!buf) 78 if (!buf) {
79 err = -ENOMEM;
79 goto exit; 80 goto exit;
81 }
80 82
81 while (len > 0) { 83 while (len > 0) {
82 int translen = (len > 1024) ? 1024 : len; 84 int translen = (len > 1024) ? 1024 : len;
@@ -98,10 +100,12 @@ static int zd1201_fw_upload(struct usb_device *dev, int apfw)
98 goto exit; 100 goto exit;
99 101
100 err = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 0x4, 102 err = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), 0x4,
101 USB_DIR_IN | 0x40, 0,0, &ret, sizeof(ret), ZD1201_FW_TIMEOUT); 103 USB_DIR_IN | 0x40, 0, 0, buf, sizeof(ret), ZD1201_FW_TIMEOUT);
102 if (err < 0) 104 if (err < 0)
103 goto exit; 105 goto exit;
104 106
107 memcpy(&ret, buf, sizeof(ret));
108
105 if (ret & 0x80) { 109 if (ret & 0x80) {
106 err = -EIO; 110 err = -EIO;
107 goto exit; 111 goto exit;
@@ -1762,8 +1766,10 @@ static int zd1201_probe(struct usb_interface *interface,
1762 zd->endp_out2 = 2; 1766 zd->endp_out2 = 2;
1763 zd->rx_urb = usb_alloc_urb(0, GFP_KERNEL); 1767 zd->rx_urb = usb_alloc_urb(0, GFP_KERNEL);
1764 zd->tx_urb = usb_alloc_urb(0, GFP_KERNEL); 1768 zd->tx_urb = usb_alloc_urb(0, GFP_KERNEL);
1765 if (!zd->rx_urb || !zd->tx_urb) 1769 if (!zd->rx_urb || !zd->tx_urb) {
1770 err = -ENOMEM;
1766 goto err_zd; 1771 goto err_zd;
1772 }
1767 1773
1768 mdelay(100); 1774 mdelay(100);
1769 err = zd1201_drvr_start(zd); 1775 err = zd1201_drvr_start(zd);