diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c index 9475e0443ff92c5a48dcadb1a8e0de6228bbb090..5e560e1b68d718a09f40df9397f613a4281c5a4f 100644 --- a/net/bridge/br_device.c +++ b/net/bridge/br_device.c @@ -41,6 +41,11 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) const unsigned char *dest; u16 vid = 0; + if (unlikely(!skb_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();