--- x/net/mac80211/main.c +++ m/net/mac80211/main.c @@ -224,6 +224,7 @@ static void ieee80211_tasklet_handler(st { struct ieee80211_local *local = from_tasklet(local, t, tasklet); struct sk_buff *skb; + unsigned long ts = jiffies + 2 * HZ; while ((skb = skb_dequeue(&local->skb_queue)) || (skb = skb_dequeue(&local->skb_queue_unreliable))) { @@ -244,6 +245,9 @@ static void ieee80211_tasklet_handler(st dev_kfree_skb(skb); break; } + + if (WARN_ON_ONCE(time_after(jiffies, ts))) + break; } }