From: "John W. Linville" Since e1000 is using work queues, we need to call flush_scheduled_work() before removing the driver from memory. Otherwise, we are prone to an Oops. Acked-by: Ganesh Venkatesan Signed-off-by: John W. Linville Signed-off-by: Andrew Morton --- 25-akpm/drivers/net/e1000/e1000_main.c | 2 ++ 1 files changed, 2 insertions(+) diff -puN drivers/net/e1000/e1000_main.c~e1000-flush-work-queues-on-remove drivers/net/e1000/e1000_main.c --- 25/drivers/net/e1000/e1000_main.c~e1000-flush-work-queues-on-remove Wed Mar 30 13:32:33 2005 +++ 25-akpm/drivers/net/e1000/e1000_main.c Wed Mar 30 13:32:33 2005 @@ -660,6 +660,8 @@ e1000_remove(struct pci_dev *pdev) struct e1000_adapter *adapter = netdev->priv; uint32_t manc; + flush_scheduled_work(); + if(adapter->hw.mac_type >= e1000_82540 && adapter->hw.media_type == e1000_media_type_copper) { manc = E1000_READ_REG(&adapter->hw, MANC); _