diff options
| author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2017-11-07 18:11:56 -0800 |
|---|---|---|
| committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2017-11-07 18:11:56 -0800 |
| commit | 0f1cd81d4a50ca99fb0b5cd8f68584bc5acab081 (patch) | |
| tree | f0aa64e956d1d2addb2263ddcd238e9f014b36a0 /drivers/net/tun.c | |
| parent | 4e974c120039e35b90d2cb0459452bd9a6a71594 (diff) | |
| parent | 39dae59d66acd86d1de24294bd2f343fd5e7a625 (diff) | |
| download | lwn-0f1cd81d4a50ca99fb0b5cd8f68584bc5acab081.tar.gz lwn-0f1cd81d4a50ca99fb0b5cd8f68584bc5acab081.zip | |
Merge tag 'v4.14-rc8' into next
Merge with mainline to bring in SPDX markings to avoid annoying merge
problems when some header files get deleted.
Diffstat (limited to 'drivers/net/tun.c')
| -rw-r--r-- | drivers/net/tun.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index e21bf90b819f..42bb820a56c9 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1286,6 +1286,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, buflen += SKB_DATA_ALIGN(len + pad); rcu_read_unlock(); + alloc_frag->offset = ALIGN((u64)alloc_frag->offset, SMP_CACHE_BYTES); if (unlikely(!skb_page_frag_refill(buflen, alloc_frag, GFP_KERNEL))) return ERR_PTR(-ENOMEM); @@ -2028,7 +2029,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) if (!dev) return -ENOMEM; err = dev_get_valid_name(net, dev, name); - if (err) + if (err < 0) goto err_free_dev; dev_net_set(dev, net); @@ -2428,6 +2429,10 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, ret = -EFAULT; break; } + if (sndbuf <= 0) { + ret = -EINVAL; + break; + } tun->sndbuf = sndbuf; tun_set_sndbuf(tun); |
