 net/core/dev.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletion(-)

diff -puN net/core/dev.c~ifdown-lockup-fix net/core/dev.c
--- 25/net/core/dev.c~ifdown-lockup-fix	2003-09-08 23:00:09.000000000 -0700
+++ 25-akpm/net/core/dev.c	2003-09-08 23:00:09.000000000 -0700
@@ -844,7 +844,11 @@ int dev_close(struct net_device *dev)
 	 * engine, but this requires more changes in devices. */
 
 	smp_mb__after_clear_bit(); /* Commit netif_running(). */
-	netif_poll_disable(dev);
+	while (test_bit(__LINK_STATE_RX_SCHED, &dev->state)) {
+		/* No hurry. */
+		current->state = TASK_INTERRUPTIBLE;
+		schedule_timeout(1);
+	}
 
 	/*
 	 *	Call the device specific close. This cannot fail.

_
