From: Jon Mason Date: Fri, 10 Dec 2010 14:03:00 +0000 (+0000) Subject: vxge: hotplug stall X-Git-Tag: v2.6.38-rc1~476^2~245 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9c1638871671721e8f3693a0dfbb0e2e05b08742;p=platform%2Fkernel%2Flinux-3.10.git vxge: hotplug stall When hot-unplugging a vxge adapter while running, the driver's remove routine prints warning and then stalls the calling thread. This is due to vxge_remove calling vxge_device_unregister to unregister the netdev before calling flush_scheduled_work clear any pending work. Swapping the order of these two functions resolves the issue. Signed-off-by: Jon Mason Signed-off-by: Ram Vepa Signed-off-by: David S. Miller --- diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c index 3ec8068..b771e4b 100644 --- a/drivers/net/vxge/vxge-main.c +++ b/drivers/net/vxge/vxge-main.c @@ -3439,11 +3439,11 @@ static void vxge_device_unregister(struct __vxge_hw_device *hldev) strncpy(buf, dev->name, IFNAMSIZ); + flush_scheduled_work(); + /* in 2.6 will call stop() if device is up */ unregister_netdev(dev); - flush_scheduled_work(); - vxge_debug_init(vdev->level_trace, "%s: ethernet device unregistered", buf); vxge_debug_entryexit(vdev->level_trace, "%s: %s:%d Exiting...", buf,