Message ID | 20221208133735.2305751-1-yangyingliang@huawei.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 3dfe3486c1cd4f82b466b7d307f23777137b8acc |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v3,1/2] net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave() | expand |
Hello: This series was applied to netdev/net.git (master) by David S. Miller <davem@davemloft.net>: On Thu, 8 Dec 2022 21:37:34 +0800 you wrote: > It is not allowed to call kfree_skb() or consume_skb() from hardware > interrupt context or with hardware interrupts being disabled. > > It should use dev_kfree_skb_irq() or dev_consume_skb_irq() instead. > The difference between them is free reason, dev_kfree_skb_irq() means > the SKB is dropped in error and dev_consume_skb_irq() means the SKB > is consumed in normal. > > [...] Here is the summary with links: - [net,v3,1/2] net: apple: mace: don't call dev_kfree_skb() under spin_lock_irqsave() https://git.kernel.org/netdev/net/c/3dfe3486c1cd - [net,v3,2/2] net: apple: bmac: don't call dev_kfree_skb() under spin_lock_irqsave() https://git.kernel.org/netdev/net/c/5fe02e046e64 You are awesome, thank you!
diff --git a/drivers/net/ethernet/apple/mace.c b/drivers/net/ethernet/apple/mace.c index d0a771b65e88..77b4ed05140b 100644 --- a/drivers/net/ethernet/apple/mace.c +++ b/drivers/net/ethernet/apple/mace.c @@ -846,7 +846,7 @@ static void mace_tx_timeout(struct timer_list *t) if (mp->tx_bad_runt) { mp->tx_bad_runt = 0; } else if (i != mp->tx_fill) { - dev_kfree_skb(mp->tx_bufs[i]); + dev_kfree_skb_irq(mp->tx_bufs[i]); if (++i >= N_TX_RING) i = 0; mp->tx_empty = i;
It is not allowed to call kfree_skb() or consume_skb() from hardware interrupt context or with hardware interrupts being disabled. It should use dev_kfree_skb_irq() or dev_consume_skb_irq() instead. The difference between them is free reason, dev_kfree_skb_irq() means the SKB is dropped in error and dev_consume_skb_irq() means the SKB is consumed in normal. In this case, dev_kfree_skb() is called in mace_tx_timeout() to drop the SKB, when tx timeout, so replace it with dev_kfree_skb_irq(). Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> --- v2 -> v3: Update commit message, and change to use dev_kfree_skb_irq(). v1 -> v2: Add a fix tag. --- drivers/net/ethernet/apple/mace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)