]> git.hungrycats.org Git - linux/commitdiff
[PATCH] sis900 skb free fix
authorAndrew Morton <akpm@osdl.org>
Wed, 29 Oct 2003 09:28:40 +0000 (04:28 -0500)
committerLinus Torvalds <torvalds@home.osdl.org>
Wed, 29 Oct 2003 09:28:40 +0000 (04:28 -0500)
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.

drivers/net/sis900.c

index 15cef66f3a73269983d5e0c6b136e91093124adb..7d97ba7adf55119e23061f44afadac1ec31b9532 100644 (file)
@@ -1438,7 +1438,7 @@ static void sis900_tx_timeout(struct net_device *net_dev)
                        pci_unmap_single(sis_priv->pci_dev, 
                                sis_priv->tx_ring[i].bufptr, skb->len,
                                PCI_DMA_TODEVICE);
-                       dev_kfree_skb(skb);
+                       dev_kfree_skb_irq(skb);
                        sis_priv->tx_skbuff[i] = 0;
                        sis_priv->tx_ring[i].cmdsts = 0;
                        sis_priv->tx_ring[i].bufptr = 0;