|
@@ -630,12 +630,10 @@ int set_registers(struct r8152 *tp, u16 value, u16 index, u16 size, void *data)
|
|
int ret;
|
|
int ret;
|
|
void *tmp;
|
|
void *tmp;
|
|
|
|
|
|
- tmp = kmalloc(size, GFP_KERNEL);
|
|
|
|
|
|
+ tmp = kmemdup(data, size, GFP_KERNEL);
|
|
if (!tmp)
|
|
if (!tmp)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
- memcpy(tmp, data, size);
|
|
|
|
-
|
|
|
|
ret = usb_control_msg(tp->udev, usb_sndctrlpipe(tp->udev, 0),
|
|
ret = usb_control_msg(tp->udev, usb_sndctrlpipe(tp->udev, 0),
|
|
RTL8152_REQ_SET_REGS, RTL8152_REQT_WRITE,
|
|
RTL8152_REQ_SET_REGS, RTL8152_REQT_WRITE,
|
|
value, index, tmp, size, 500);
|
|
value, index, tmp, size, 500);
|