This patch
- ensures no IO takes place during resets
- reports resets to user space
Signed-off-by: Oliver Neukum <oneukum@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
 
        mutex_lock(&desc->lock);
        if (!desc->count++) {
+               desc->werr = 0;
+               desc->rerr = 0;
                rv = usb_submit_urb(desc->validity, GFP_KERNEL);
                if (rv < 0) {
                        desc->count--;
        struct wdm_device *desc = usb_get_intfdata(intf);
 
        mutex_lock(&desc->lock);
+       kill_urbs(desc);
+
+       /*
+        * we notify everybody using poll of
+        * an exceptional situation
+        * must be done before recovery lest a spontaneous
+        * message from the device is lost
+        */
+       spin_lock_irq(&desc->iuspin);
+       desc->rerr = -EINTR;
+       spin_unlock_irq(&desc->iuspin);
+       wake_up_all(&desc->wait);
        return 0;
 }