diff options
| -rw-r--r-- | drivers/usb/core/devio.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 6e8bcdfd23b4..ca948bbc388f 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c | |||
| @@ -1312,9 +1312,9 @@ static int processcompl(struct async *as, void __user * __user *arg) | |||
| 1312 | void __user *addr = as->userurb; | 1312 | void __user *addr = as->userurb; |
| 1313 | unsigned int i; | 1313 | unsigned int i; |
| 1314 | 1314 | ||
| 1315 | if (as->userbuffer) | 1315 | if (as->userbuffer && urb->actual_length) |
| 1316 | if (copy_to_user(as->userbuffer, urb->transfer_buffer, | 1316 | if (copy_to_user(as->userbuffer, urb->transfer_buffer, |
| 1317 | urb->transfer_buffer_length)) | 1317 | urb->actual_length)) |
| 1318 | goto err_out; | 1318 | goto err_out; |
| 1319 | if (put_user(as->status, &userurb->status)) | 1319 | if (put_user(as->status, &userurb->status)) |
| 1320 | goto err_out; | 1320 | goto err_out; |
| @@ -1475,9 +1475,9 @@ static int processcompl_compat(struct async *as, void __user * __user *arg) | |||
| 1475 | void __user *addr = as->userurb; | 1475 | void __user *addr = as->userurb; |
| 1476 | unsigned int i; | 1476 | unsigned int i; |
| 1477 | 1477 | ||
| 1478 | if (as->userbuffer) | 1478 | if (as->userbuffer && urb->actual_length) |
| 1479 | if (copy_to_user(as->userbuffer, urb->transfer_buffer, | 1479 | if (copy_to_user(as->userbuffer, urb->transfer_buffer, |
| 1480 | urb->transfer_buffer_length)) | 1480 | urb->actual_length)) |
| 1481 | return -EFAULT; | 1481 | return -EFAULT; |
| 1482 | if (put_user(as->status, &userurb->status)) | 1482 | if (put_user(as->status, &userurb->status)) |
| 1483 | return -EFAULT; | 1483 | return -EFAULT; |
