From 89f57cb6b93c3ac3a3b46480574054e603c47c36 Mon Sep 17 00:00:00 2001 From: Mike Lockwood Date: Fri, 25 Mar 2011 12:22:22 -0700 Subject: [PATCH] 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 --- drivers/usb/gadget/f_mtp.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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; -- 2.34.1