Skip to content

Commit 71605c6

Browse files
Yang Yinglianggregkh
Yang Yingliang
authored andcommitted
ethernet: s2io: don't call dev_kfree_skb() under spin_lock_irqsave()
[ Upstream commit 6cee96e ] 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 free_tx_buffers() to drop the SKBs in tx buffers, when the card is down, so replace it with dev_kfree_skb_irq() here. Fixes: 1da177e ("Linux-2.6.12-rc2") Signed-off-by: Yang Yingliang <[email protected]> Signed-off-by: David S. Miller <[email protected]> Signed-off-by: Sasha Levin <[email protected]>
1 parent ce1b3a4 commit 71605c6

File tree

1 file changed

+1
-1
lines changed
  • drivers/net/ethernet/neterion

1 file changed

+1
-1
lines changed

drivers/net/ethernet/neterion/s2io.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -2386,7 +2386,7 @@ static void free_tx_buffers(struct s2io_nic *nic)
23862386
skb = s2io_txdl_getskb(&mac_control->fifos[i], txdp, j);
23872387
if (skb) {
23882388
swstats->mem_freed += skb->truesize;
2389-
dev_kfree_skb(skb);
2389+
dev_kfree_skb_irq(skb);
23902390
cnt++;
23912391
}
23922392
}

0 commit comments

Comments
 (0)