diff options
Diffstat (limited to 'drivers/usb')
| -rw-r--r-- | drivers/usb/class/cdc-wdm.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/usb/class/cdc-wdm.c b/drivers/usb/class/cdc-wdm.c index 650e1da4d2bf..4e8451ca2d6c 100644 --- a/drivers/usb/class/cdc-wdm.c +++ b/drivers/usb/class/cdc-wdm.c | |||
| @@ -620,10 +620,12 @@ static int wdm_release(struct inode *inode, struct file *file) | |||
| 620 | if (!desc->count) { | 620 | if (!desc->count) { |
| 621 | dev_dbg(&desc->intf->dev, "wdm_release: cleanup"); | 621 | dev_dbg(&desc->intf->dev, "wdm_release: cleanup"); |
| 622 | kill_urbs(desc); | 622 | kill_urbs(desc); |
| 623 | if (!test_bit(WDM_DISCONNECTING, &desc->flags)) | 623 | if (!test_bit(WDM_DISCONNECTING, &desc->flags)) { |
| 624 | desc->manage_power(desc->intf, 0); | 624 | desc->manage_power(desc->intf, 0); |
| 625 | else | 625 | } else { |
| 626 | dev_dbg(&desc->intf->dev, "%s: device gone - cleaning up\n", __func__); | ||
| 626 | cleanup(desc); | 627 | cleanup(desc); |
| 628 | } | ||
| 627 | } | 629 | } |
| 628 | mutex_unlock(&wdm_mutex); | 630 | mutex_unlock(&wdm_mutex); |
| 629 | return 0; | 631 | return 0; |
| @@ -897,6 +899,8 @@ static void wdm_disconnect(struct usb_interface *intf) | |||
| 897 | mutex_unlock(&desc->rlock); | 899 | mutex_unlock(&desc->rlock); |
| 898 | if (!desc->count) | 900 | if (!desc->count) |
| 899 | cleanup(desc); | 901 | cleanup(desc); |
| 902 | else | ||
| 903 | dev_dbg(&intf->dev, "%s: %d open files - postponing cleanup\n", __func__, desc->count); | ||
| 900 | mutex_unlock(&wdm_mutex); | 904 | mutex_unlock(&wdm_mutex); |
| 901 | } | 905 | } |
| 902 | 906 | ||
