| To: | jgarzik@xxxxxxxxx |
|---|---|
| Subject: | [PATCH 2.6.9-rc3-mm2 4/5] r8169: rtl8169_close() races |
| From: | Francois Romieu <romieu@xxxxxxxxxxxxx> |
| Date: | Mon, 4 Oct 2004 21:52:16 +0200 |
| Cc: | netdev@xxxxxxxxxxx, akpm@xxxxxxxx |
| In-reply-to: | <20041004195051.GB20379@electric-eye.fr.zoreil.com> |
| References: | <20041004194826.GA18404@electric-eye.fr.zoreil.com> <20041004194949.GA20379@electric-eye.fr.zoreil.com> <20041004195051.GB20379@electric-eye.fr.zoreil.com> |
| Sender: | netdev-bounce@xxxxxxxxxxx |
| User-agent: | Mutt/1.4.1i |
- close the race with rtl8169_interrupt() which appears when rtl8169_close()
uses synchronize_irq()/free_irq();
- netif_poll_disable() allows rtl8169_close() to wait for any pending
rtl8169_poll() to complete so it can safely clear the rings.
Signed-off-by: Francois Romieu <romieu@xxxxxxxxxxxxx>
diff -puN drivers/net/r8169.c~r8169-215 drivers/net/r8169.c
--- linux-2.6.9-rc3/drivers/net/r8169.c~r8169-215 2004-10-04
21:26:01.000000000 +0200
+++ linux-2.6.9-rc3-fr/drivers/net/r8169.c 2004-10-04 21:26:01.000000000
+0200
@@ -2142,6 +2142,9 @@ rtl8169_interrupt(int irq, void *dev_ins
int status = 0;
int handled = 0;
+ if (unlikely(!netif_running(dev)))
+ goto out;
+
do {
status = RTL_R16(IntrStatus);
@@ -2196,6 +2199,7 @@ rtl8169_interrupt(int irq, void *dev_ins
/* Clear all interrupt sources. */
RTL_W16(IntrStatus, 0xffff);
}
+out:
return IRQ_RETVAL(handled);
}
@@ -2259,6 +2263,8 @@ rtl8169_close(struct net_device *dev)
synchronize_irq(dev->irq);
free_irq(dev->irq, dev);
+ netif_poll_disable(dev);
+
rtl8169_tx_clear(tp);
rtl8169_rx_clear(tp);
_
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| ||
| Previous by Date: | [PATCH 2.6.9-rc3-mm2 2/5] r8169: wrong advertisement of VLAN features, Francois Romieu |
|---|---|
| Next by Date: | [PATCH 2.6.9-rc3-mm2 3/5] r8169: automatic pci dac step down, Francois Romieu |
| Previous by Thread: | [PATCH 2.6.9-rc3-mm2 3/5] r8169: automatic pci dac step down, Francois Romieu |
| Next by Thread: | [PATCH 2.6.9-rc3-mm2 5/5] r8169: cleanup, Francois Romieu |
| Indexes: | [Date] [Thread] [Top] [All Lists] |