diff --git a/net/core/dev.c b/net/core/dev.c index 8f9a8b009a238df50438d0afef69a48e99737419..4b1053057ca601742088038f40e6ddffa4eb6cb5 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3899,10 +3899,12 @@ int dev_direct_xmit(struct sk_buff *skb, u16 queue_id) local_bh_disable(); + dev_xmit_recursion_inc(); HARD_TX_LOCK(dev, txq, smp_processor_id()); if (!netif_xmit_frozen_or_drv_stopped(txq)) ret = netdev_start_xmit(skb, dev, txq, false); HARD_TX_UNLOCK(dev, txq); + dev_xmit_recursion_dec(); local_bh_enable(); diff --git a/net/core/sock.c b/net/core/sock.c index 6542b52d0f5f8b1fcc2410ba35abbc989f246a4c..843e9a496813e9455d204ac38acf155db47aff95 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -642,7 +642,7 @@ bool sk_mc_loop(struct sock *sk) return inet6_sk(sk)->mc_loop; #endif } - WARN_ON(1); + WARN_ON_ONCE(1); return true; } EXPORT_SYMBOL(sk_mc_loop);