--- m/net/core/dev.c +++ n/net/core/dev.c @@ -5041,7 +5041,10 @@ static __latent_entropy void net_tx_acti if (!(q->flags & TCQ_F_NOLOCK)) { root_lock = qdisc_lock(q); - spin_lock(root_lock); + if (!spin_trylock(root_lock)) { + __netif_reschedule(q); + continue; + } } else if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) { /* There is a synchronize_net() between