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. _