diff options
Diffstat (limited to 'drivers/net/usb/mcs7830.c')
| -rw-r--r-- | drivers/net/usb/mcs7830.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/drivers/net/usb/mcs7830.c b/drivers/net/usb/mcs7830.c index 5385d66b306e..ced8f36ebd01 100644 --- a/drivers/net/usb/mcs7830.c +++ b/drivers/net/usb/mcs7830.c | |||
| @@ -94,10 +94,18 @@ static int mcs7830_get_reg(struct usbnet *dev, u16 index, u16 size, void *data) | |||
| 94 | { | 94 | { |
| 95 | struct usb_device *xdev = dev->udev; | 95 | struct usb_device *xdev = dev->udev; |
| 96 | int ret; | 96 | int ret; |
| 97 | void *buffer; | ||
| 98 | |||
| 99 | buffer = kmalloc(size, GFP_NOIO); | ||
| 100 | if (buffer == NULL) | ||
| 101 | return -ENOMEM; | ||
| 97 | 102 | ||
| 98 | ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ, | 103 | ret = usb_control_msg(xdev, usb_rcvctrlpipe(xdev, 0), MCS7830_RD_BREQ, |
| 99 | MCS7830_RD_BMREQ, 0x0000, index, data, | 104 | MCS7830_RD_BMREQ, 0x0000, index, buffer, |
| 100 | size, MCS7830_CTRL_TIMEOUT); | 105 | size, MCS7830_CTRL_TIMEOUT); |
| 106 | memcpy(data, buffer, size); | ||
| 107 | kfree(buffer); | ||
| 108 | |||
| 101 | return ret; | 109 | return ret; |
| 102 | } | 110 | } |
| 103 | 111 | ||
| @@ -105,10 +113,18 @@ static int mcs7830_set_reg(struct usbnet *dev, u16 index, u16 size, void *data) | |||
| 105 | { | 113 | { |
| 106 | struct usb_device *xdev = dev->udev; | 114 | struct usb_device *xdev = dev->udev; |
| 107 | int ret; | 115 | int ret; |
| 116 | void *buffer; | ||
| 117 | |||
| 118 | buffer = kmalloc(size, GFP_NOIO); | ||
| 119 | if (buffer == NULL) | ||
| 120 | return -ENOMEM; | ||
| 121 | |||
| 122 | memcpy(buffer, data, size); | ||
| 108 | 123 | ||
| 109 | ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ, | 124 | ret = usb_control_msg(xdev, usb_sndctrlpipe(xdev, 0), MCS7830_WR_BREQ, |
| 110 | MCS7830_WR_BMREQ, 0x0000, index, data, | 125 | MCS7830_WR_BMREQ, 0x0000, index, buffer, |
| 111 | size, MCS7830_CTRL_TIMEOUT); | 126 | size, MCS7830_CTRL_TIMEOUT); |
| 127 | kfree(buffer); | ||
| 112 | return ret; | 128 | return ret; |
| 113 | } | 129 | } |
| 114 | 130 | ||
