diff --git a/drivers/net/tap.c b/drivers/net/tap.c index b55f6806cba31..f5b923216ed02 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -1145,6 +1145,11 @@ static int tap_get_user_xdp(struct tap_queue *q, struct xdp_buff *xdp) struct sk_buff *skb; int err, depth; + if (unlikely(xdp->data_end - xdp->data < ETH_HLEN)) { + err = -EINVAL; + goto err; + } + if (q->flags & IFF_VNET_HDR) vnet_hdr_len = READ_ONCE(q->vnet_hdr_sz);