diff options
| -rw-r--r-- | drivers/staging/winbond/wbusb.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/staging/winbond/wbusb.c b/drivers/staging/winbond/wbusb.c index 9c3f9439f35e..3b2d52819b4c 100644 --- a/drivers/staging/winbond/wbusb.c +++ b/drivers/staging/winbond/wbusb.c | |||
| @@ -386,7 +386,7 @@ static int wb35_probe(struct usb_interface *intf, const struct usb_device_id *id | |||
| 386 | if (err) | 386 | if (err) |
| 387 | goto error_free_hw; | 387 | goto error_free_hw; |
| 388 | 388 | ||
| 389 | usb_set_intfdata(intf, priv); | 389 | usb_set_intfdata(intf, dev); |
| 390 | 390 | ||
| 391 | return 0; | 391 | return 0; |
| 392 | 392 | ||
| @@ -415,10 +415,15 @@ static void wb35_hw_halt(struct wbsoft_priv *adapter) | |||
| 415 | 415 | ||
| 416 | static void wb35_disconnect(struct usb_interface *intf) | 416 | static void wb35_disconnect(struct usb_interface *intf) |
| 417 | { | 417 | { |
| 418 | struct wbsoft_priv *priv = usb_get_intfdata(intf); | 418 | struct ieee80211_hw *hw = usb_get_intfdata(intf); |
| 419 | struct wbsoft_priv *priv = hw->priv; | ||
| 419 | 420 | ||
| 420 | wb35_hw_halt(priv); | 421 | wb35_hw_halt(priv); |
| 421 | 422 | ||
| 423 | ieee80211_stop_queues(hw); | ||
| 424 | ieee80211_unregister_hw(hw); | ||
| 425 | ieee80211_free_hw(hw); | ||
| 426 | |||
| 422 | usb_set_intfdata(intf, NULL); | 427 | usb_set_intfdata(intf, NULL); |
| 423 | usb_put_dev(interface_to_usbdev(intf)); | 428 | usb_put_dev(interface_to_usbdev(intf)); |
| 424 | } | 429 | } |
