Skip to content

Commit 45fc6d7

Browse files
Yang YingliangKalle Valo
authored andcommitted
wifi: ipw2x00: don't call dev_kfree_skb() under spin_lock_irqsave()
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 to free and drop the SKB when it's reset, so replace it with dev_kfree_skb_irq(). Compile tested only. Fixes: 43f66a6 ("Add ipw2200 wireless driver.") Signed-off-by: Yang Yingliang <yangyingliang@huawei.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20221208143826.2385218-1-yangyingliang@huawei.com
1 parent c6015bf commit 45fc6d7

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/net/wireless/intel/ipw2x00/ipw2200.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3427,7 +3427,7 @@ static void ipw_rx_queue_reset(struct ipw_priv *priv,
34273427
dma_unmap_single(&priv->pci_dev->dev,
34283428
rxq->pool[i].dma_addr,
34293429
IPW_RX_BUF_SIZE, DMA_FROM_DEVICE);
3430-
dev_kfree_skb(rxq->pool[i].skb);
3430+
dev_kfree_skb_irq(rxq->pool[i].skb);
34313431
rxq->pool[i].skb = NULL;
34323432
}
34333433
list_add_tail(&rxq->pool[i].list, &rxq->rx_used);

0 commit comments

Comments
 (0)