summaryrefslogtreecommitdiff
path: root/net/compat.c
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2010-12-21 18:34:37 -0800
committerColin Cross <ccross@android.com>2010-12-21 18:34:37 -0800
commitb104a07edb2a319f734ddc4fe04852865d8d9e24 (patch)
treea0cd50b3d84ece4d94e366fac4b440e380c2d247 /net/compat.c
parente87ec4d59e1f96381547e614c5279bed63775719 (diff)
parenta1346c99fc89f2b3d35c7d7e2e4aef8ea4124342 (diff)
Merge commit 'v2.6.36.2' into linux-tegra-2.6.36
Diffstat (limited to 'net/compat.c')
-rw-r--r--net/compat.c10
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,
compat_size_t len;
if (get_user(len, &uiov32->iov_len) ||
- get_user(buf, &uiov32->iov_base)) {
- tot_len = -EFAULT;
- break;
- }
+ get_user(buf, &uiov32->iov_base))
+ return -EFAULT;
+
+ if (len > INT_MAX - tot_len)
+ len = INT_MAX - tot_len;
+
tot_len += len;
kiov->iov_base = compat_ptr(buf);
kiov->iov_len = (__kernel_size_t) len;