diff --git a/net/core/filter.c b/net/core/filter.c index bb0136e7a8e422b010477333c811db79aaf56e3f..cb3b635e35be3793ff7266f1aae9c5ffdbd4b9e5 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2126,6 +2126,10 @@ static int __bpf_redirect_no_mac(struct sk_buff *skb, struct net_device *dev, if (mlen) { __skb_pull(skb, mlen); + if (unlikely(!skb->len)) { + kfree_skb(skb); + return -ERANGE; + } /* At ingress, the mac header has already been pulled once. * At egress, skb_pospull_rcsum has to be done in case that