usb: renesas_usbhs: shrink spin lock area
[pandora-kernel.git] / drivers / usb / class / cdc-wdm.c
index a97c018..2b9ff51 100644 (file)
@@ -542,6 +542,8 @@ static int wdm_open(struct inode *inode, struct file *file)
 
        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--;
@@ -853,6 +855,18 @@ static int wdm_pre_reset(struct usb_interface *intf)
        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;
 }