]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
dev: Defer free of skbs in flush_backlog
authorSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Thu, 23 Jul 2020 17:31:48 +0000 (11:31 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 31 Jul 2020 16:39:30 +0000 (18:39 +0200)
[ Upstream commit 7df5cb75cfb8acf96c7f2342530eb41e0c11f4c3 ]

IRQs are disabled when freeing skbs in input queue.
Use the IRQ safe variant to free skbs here.

Fixes: 145dd5f9c88f ("net: flush the softnet backlog in process context")
Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/core/dev.c

index 727965565d311098c57aa8848acd275465b931f1..25858f1f67cf74568e851803e8a27e7a4521e3ef 100644 (file)
@@ -5229,7 +5229,7 @@ static void flush_backlog(struct work_struct *work)
        skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
                if (skb->dev->reg_state == NETREG_UNREGISTERING) {
                        __skb_unlink(skb, &sd->input_pkt_queue);
-                       kfree_skb(skb);
+                       dev_kfree_skb_irq(skb);
                        input_queue_head_incr(sd);
                }
        }