From: Mike Lockwood Date: Fri, 25 Mar 2011 19:22:22 +0000 (-0700) Subject: USB: gadget: f_mtp: Don't block waiting for online state in read() X-Git-Tag: firefly_0821_release~9834^2~32 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=89f57cb6b93c3ac3a3b46480574054e603c47c36;p=firefly-linux-kernel-4.4.55.git USB: gadget: f_mtp: Don't block waiting for online state in read() Return -ENODEV instead if USB is not connected. Signed-off-by: Mike Lockwood --- diff --git a/drivers/usb/gadget/f_mtp.c b/drivers/usb/gadget/f_mtp.c index 92dd89b340bc..df6539fced25 100644 --- a/drivers/usb/gadget/f_mtp.c +++ b/drivers/usb/gadget/f_mtp.c @@ -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;