aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/tun.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-09-15 13:43:45 +0100
committerMark Brown <broonie@linaro.org>2013-09-15 13:43:45 +0100
commitdafe3258c5449e2697097285c37c761915053eae (patch)
tree3132efe10ff5766feae3311993cd7eef7e75d6f3 /drivers/net/tun.c
parent15812f79511f4b94ee42f35c9095ba0c0cb5204c (diff)
parent4ed4d44eb2192604716226a6f0edad02ab76101f (diff)
Merge branch 'linux-linaro-lsk' into linux-linaro-lsk-androidlsk-android-13.09
Diffstat (limited to 'drivers/net/tun.c')
-rw-r--r--drivers/net/tun.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 835d2bdc7655..7fd9c66dbe38 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -1076,8 +1076,9 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
u32 rxhash;
if (!(tun->flags & TUN_NO_PI)) {
- if ((len -= sizeof(pi)) > total_len)
+ if (len < sizeof(pi))
return -EINVAL;
+ len -= sizeof(pi);
if (memcpy_fromiovecend((void *)&pi, iv, 0, sizeof(pi)))
return -EFAULT;
@@ -1085,8 +1086,9 @@ static ssize_t tun_get_user(struct tun_struct *tun, struct tun_file *tfile,
}
if (tun->flags & TUN_VNET_HDR) {
- if ((len -= tun->vnet_hdr_sz) > total_len)
+ if (len < tun->vnet_hdr_sz)
return -EINVAL;
+ len -= tun->vnet_hdr_sz;
if (memcpy_fromiovecend((void *)&gso, iv, offset, sizeof(gso)))
return -EFAULT;