diff options
author | Pavel Roskin <proski@gnu.org> | 2007-07-10 02:21:04 -0400 |
---|---|---|
committer | Guido Guenther <agx@bogon.sigxcpu.org> | 2007-07-15 12:19:00 -0400 |
commit | 2caf7a57041810f06919b6cd9c01227a3ee1028b (patch) | |
tree | 1c2322944714ba7574970e7b4b94e49fcfe1bec1 | |
parent | d9c3c996b9cd9efd315f7b6a31c1fe22d57a6326 (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.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -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 */ |