diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c
index dff134185c18a94612f313fce8428733360ec18d..7ce43fb8118a3b79e969711606390bdaafee96e5 100644
--- a/drivers/usb/class/usblp.c
+++ b/drivers/usb/class/usblp.c
@@ -753,6 +753,7 @@ static ssize_t usblp_read(struct file *file, char __user *buffer, size_t count,
 				schedule();
 			} else {
 				set_current_state(TASK_RUNNING);
+				down(&usblp->sem);
 				break;
 			}
 			down (&usblp->sem);