diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 01758114b458f776849ed673390ade9f5800de9f..5fa6e69a353498c732d349e41c407959b4ca789a 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1449,8 +1449,9 @@ static struct sk_buff *tun_napi_alloc_frags(struct tun_file *tfile, int err; int i; - if (it->nr_segs > MAX_SKB_FRAGS + 1) - return ERR_PTR(-ENOMEM); + if (it->nr_segs > MAX_SKB_FRAGS + 1 || + len > (ETH_MAX_MTU - NET_SKB_PAD - NET_IP_ALIGN)) + return ERR_PTR(-EMSGSIZE); local_bh_disable(); skb = napi_get_frags(&tfile->napi);