| From foo@baz Wed 29 Jul 2020 11:19:55 AM CEST |
| From: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> |
| Date: Thu, 23 Jul 2020 11:31:48 -0600 |
| Subject: dev: Defer free of skbs in flush_backlog |
| |
| From: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org> |
| |
| [ 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 | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/net/core/dev.c |
| +++ b/net/core/dev.c |
| @@ -5229,7 +5229,7 @@ static void flush_backlog(struct work_st |
| 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); |
| } |
| } |