Commit bf69c42c authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] sis900 skb free fix

This driver is freeing skb's from timer context, with local irq's disabled.

It generates warnings from local_bh_enable() because local_bh_enable()
reenables interrupts, exposing the machine to deadlocks.

So use the deferred dev_kfree_skb_irq() instead.
parent a7fa6cb1
...@@ -1438,7 +1438,7 @@ static void sis900_tx_timeout(struct net_device *net_dev) ...@@ -1438,7 +1438,7 @@ static void sis900_tx_timeout(struct net_device *net_dev)
pci_unmap_single(sis_priv->pci_dev, pci_unmap_single(sis_priv->pci_dev,
sis_priv->tx_ring[i].bufptr, skb->len, sis_priv->tx_ring[i].bufptr, skb->len,
PCI_DMA_TODEVICE); PCI_DMA_TODEVICE);
dev_kfree_skb(skb); dev_kfree_skb_irq(skb);
sis_priv->tx_skbuff[i] = 0; sis_priv->tx_skbuff[i] = 0;
sis_priv->tx_ring[i].cmdsts = 0; sis_priv->tx_ring[i].cmdsts = 0;
sis_priv->tx_ring[i].bufptr = 0; sis_priv->tx_ring[i].bufptr = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment