diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c index 65fa18928fe3..774f68d1a2b3 100644 --- a/net/tipc/bearer.c +++ b/net/tipc/bearer.c @@ -661,6 +661,10 @@ static int tipc_l2_rcv_msg(struct sk_buff *skb, struct net_device *dev, { struct tipc_bearer *b; + skb = skb_share_check(skb, GFP_ATOMIC); + if (!skb) + return NET_RX_DROP; + rcu_read_lock(); b = rcu_dereference(dev->tipc_ptr) ?: rcu_dereference(orig_dev->tipc_ptr);