aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2007-07-10 02:21:04 -0400
committerGuido Guenther <agx@bogon.sigxcpu.org>2007-07-15 12:19:00 -0400
commit2caf7a57041810f06919b6cd9c01227a3ee1028b (patch)
tree1c2322944714ba7574970e7b4b94e49fcfe1bec1
parentd9c3c996b9cd9efd315f7b6a31c1fe22d57a6326 (diff)
[PATCH] Move usb_put_dev() further to the end of at76_delete_device()
Make sure that the USB device won't be removed before all timers and scheduled works are canceled. Signed-off-by: Pavel Roskin <proski@gnu.org>
-rw-r--r--at76_usb.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/at76_usb.c b/at76_usb.c
index c8efd1d..823389f 100644
--- a/at76_usb.c
+++ b/at76_usb.c
@@ -2149,8 +2149,6 @@ static void at76_delete_device(struct at76_priv *priv)
unregister_netdev(priv->netdev);
}
- usb_put_dev(priv->udev);
-
/* assuming we used keventd, it must quiesce too */
flush_scheduled_work();
@@ -2190,6 +2188,8 @@ static void at76_delete_device(struct at76_priv *priv)
dev_kfree_skb(priv->rx_data[i].skb);
priv->rx_data[i].skb = NULL;
}
+ usb_put_dev(priv->udev);
+
at76_dbg(DBG_PROC_ENTRY, "%s: before freeing priv/netdev",
__FUNCTION__);
free_netdev(priv->netdev); /* priv is in netdev */