USB: gadget: f_mtp: Don't block waiting for online state in read()
authorMike Lockwood <lockwood@android.com>
Fri, 25 Mar 2011 19:22:22 +0000 (12:22 -0700)
committerMike Lockwood <lockwood@android.com>
Fri, 25 Mar 2011 19:27:31 +0000 (12:27 -0700)
Return -ENODEV instead if USB is not connected.

Signed-off-by: Mike Lockwood <lockwood@android.com>
drivers/usb/gadget/f_mtp.c

index 92dd89b340bcf5b64c1ca31bc94658931f3f51c3..df6539fced25d6ee0abb6cb557e540fbcb679240 100644 (file)
@@ -469,15 +469,11 @@ static ssize_t mtp_read(struct file *fp, char __user *buf,
        if (count > BULK_BUFFER_SIZE)
                return -EINVAL;
 
-       /* we will block until we're online */
-       DBG(cdev, "mtp_read: waiting for online state\n");
-       ret = wait_event_interruptible(dev->read_wq,
-               dev->state != STATE_OFFLINE);
-       if (ret < 0) {
-               r = ret;
-               goto done;
-       }
        spin_lock_irq(&dev->lock);
+       if (dev->state == STATE_OFFLINE) {
+               spin_unlock_irq(&dev->lock);
+               return -ENODEV;
+       }
        if (dev->state == STATE_CANCELED) {
                /* report cancelation to userspace */
                dev->state = STATE_READY;