diff options
Diffstat (limited to 'drivers/usb/serial/ezusb.c')
-rw-r--r-- | drivers/usb/serial/ezusb.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/drivers/usb/serial/ezusb.c b/drivers/usb/serial/ezusb.c index 5169c2d154ab..97ee718b1da2 100644 --- a/drivers/usb/serial/ezusb.c +++ b/drivers/usb/serial/ezusb.c | |||
@@ -31,12 +31,11 @@ int ezusb_writememory (struct usb_serial *serial, int address, unsigned char *da | |||
31 | return -ENODEV; | 31 | return -ENODEV; |
32 | } | 32 | } |
33 | 33 | ||
34 | transfer_buffer = kmalloc (length, GFP_KERNEL); | 34 | transfer_buffer = kmemdup(data, length, GFP_KERNEL); |
35 | if (!transfer_buffer) { | 35 | if (!transfer_buffer) { |
36 | dev_err(&serial->dev->dev, "%s - kmalloc(%d) failed.\n", __FUNCTION__, length); | 36 | dev_err(&serial->dev->dev, "%s - kmalloc(%d) failed.\n", __FUNCTION__, length); |
37 | return -ENOMEM; | 37 | return -ENOMEM; |
38 | } | 38 | } |
39 | memcpy (transfer_buffer, data, length); | ||
40 | result = usb_control_msg (serial->dev, usb_sndctrlpipe(serial->dev, 0), bRequest, 0x40, address, 0, transfer_buffer, length, 3000); | 39 | result = usb_control_msg (serial->dev, usb_sndctrlpipe(serial->dev, 0), bRequest, 0x40, address, 0, transfer_buffer, length, 3000); |
41 | kfree (transfer_buffer); | 40 | kfree (transfer_buffer); |
42 | return result; | 41 | return result; |