|
@@ -1312,9 +1312,9 @@ static int processcompl(struct async *as, void __user * __user *arg)
|
|
|
void __user *addr = as->userurb;
|
|
|
unsigned int i;
|
|
|
|
|
|
- if (as->userbuffer)
|
|
|
+ if (as->userbuffer && urb->actual_length)
|
|
|
if (copy_to_user(as->userbuffer, urb->transfer_buffer,
|
|
|
- urb->transfer_buffer_length))
|
|
|
+ urb->actual_length))
|
|
|
goto err_out;
|
|
|
if (put_user(as->status, &userurb->status))
|
|
|
goto err_out;
|
|
@@ -1475,9 +1475,9 @@ static int processcompl_compat(struct async *as, void __user * __user *arg)
|
|
|
void __user *addr = as->userurb;
|
|
|
unsigned int i;
|
|
|
|
|
|
- if (as->userbuffer)
|
|
|
+ if (as->userbuffer && urb->actual_length)
|
|
|
if (copy_to_user(as->userbuffer, urb->transfer_buffer,
|
|
|
- urb->transfer_buffer_length))
|
|
|
+ urb->actual_length))
|
|
|
return -EFAULT;
|
|
|
if (put_user(as->status, &userurb->status))
|
|
|
return -EFAULT;
|