From e7e982d69c43b89f7e19b63479c8b2e880fbd75c Mon Sep 17 00:00:00 2001 From: Vincent Palatin Date: Mon, 9 Jan 2012 08:32:36 +0000 Subject: eth: remove usb-ethernet devices before re-enumerating them Fix the crash when running several times usb_init() with a USB ethernet device plugged. Signed-off-by: Vincent Palatin Tested-by: Wolfgang Grandegger --- drivers/usb/eth/usb_ether.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'drivers') diff --git a/drivers/usb/eth/usb_ether.c b/drivers/usb/eth/usb_ether.c index 48a30ebbf..6cad6c87c 100644 --- a/drivers/usb/eth/usb_ether.c +++ b/drivers/usb/eth/usb_ether.c @@ -127,8 +127,11 @@ int usb_host_eth_scan(int mode) old_async = usb_disable_asynch(1); /* asynch transfer not allowed */ - for (i = 0; i < USB_MAX_ETH_DEV; i++) - memset(&usb_eth[i], 0, sizeof(usb_eth[i])); + /* unregister a previously detected device */ + for (i = 0; i < usb_max_eth_dev; i++) + eth_unregister(&usb_eth[i].eth_dev); + + memset(usb_eth, 0, sizeof(usb_eth)); for (i = 0; prob_dev[i].probe; i++) { if (prob_dev[i].before_probe) -- cgit v1.2.3