diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 4e73ab3482b8..c551c7a29fd3 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -979,6 +979,12 @@ static void kfree_skb_add_bulk(struct sk_buff *skb, return; } + /* don't use kmem_cache bulk API with IRQs disabled */ + if (unlikely(irqs_disabled())) { + __kfree_skb(skb); + return; + } + skb_release_all(skb, reason); sa->skb_array[sa->skb_count++] = skb;