diff options
Diffstat (limited to 'net/compat.c')
| -rw-r--r-- | net/compat.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/net/compat.c b/net/compat.c index 63d260e81472..3649d5895361 100644 --- a/net/compat.c +++ b/net/compat.c  | |||
| @@ -41,10 +41,12 @@ static inline int iov_from_user_compat_to_kern(struct iovec *kiov, | |||
| 41 | compat_size_t len; | 41 | compat_size_t len; | 
| 42 | 42 | ||
| 43 | if (get_user(len, &uiov32->iov_len) || | 43 | if (get_user(len, &uiov32->iov_len) || | 
| 44 | get_user(buf, &uiov32->iov_base)) { | 44 | get_user(buf, &uiov32->iov_base)) | 
| 45 | tot_len = -EFAULT; | 45 | return -EFAULT; | 
| 46 | break; | 46 | |
| 47 | } | 47 | if (len > INT_MAX - tot_len) | 
| 48 | len = INT_MAX - tot_len; | ||
| 49 | |||
| 48 | tot_len += len; | 50 | tot_len += len; | 
| 49 | kiov->iov_base = compat_ptr(buf); | 51 | kiov->iov_base = compat_ptr(buf); | 
| 50 | kiov->iov_len = (__kernel_size_t) len; | 52 | kiov->iov_len = (__kernel_size_t) len; | 
