diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index d3ea9d0779fb61b17b5bd09126f5615fa6d4b5fb..84e37108c6b5e0b2b68ad96b16edc68728548fd2 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -36,6 +36,11 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) const unsigned char *dest; u16 vid = 0; + if (unlikely(!pskb_may_pull(skb, ETH_HLEN))) { + kfree_skb(skb); + return NETDEV_TX_OK; + } + memset(skb->cb, 0, sizeof(struct br_input_skb_cb)); rcu_read_lock();