diff options
Diffstat (limited to 'drivers/usb/class/usblp.c')
-rw-r--r-- | drivers/usb/class/usblp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/drivers/usb/class/usblp.c b/drivers/usb/class/usblp.c index 3f3ee1351930..d2747a49b974 100644 --- a/drivers/usb/class/usblp.c +++ b/drivers/usb/class/usblp.c | |||
@@ -880,16 +880,19 @@ static int usblp_wwait(struct usblp *usblp, int nonblock) | |||
880 | if (rc <= 0) | 880 | if (rc <= 0) |
881 | break; | 881 | break; |
882 | 882 | ||
883 | if (usblp->flags & LP_ABORT) { | 883 | if (schedule_timeout(msecs_to_jiffies(1500)) == 0) { |
884 | if (schedule_timeout(msecs_to_jiffies(5000)) == 0) { | 884 | if (usblp->flags & LP_ABORT) { |
885 | err = usblp_check_status(usblp, err); | 885 | err = usblp_check_status(usblp, err); |
886 | if (err == 1) { /* Paper out */ | 886 | if (err == 1) { /* Paper out */ |
887 | rc = -ENOSPC; | 887 | rc = -ENOSPC; |
888 | break; | 888 | break; |
889 | } | 889 | } |
890 | } else { | ||
891 | /* Prod the printer, Gentoo#251237. */ | ||
892 | mutex_lock(&usblp->mut); | ||
893 | usblp_read_status(usblp, usblp->statusbuf); | ||
894 | mutex_unlock(&usblp->mut); | ||
890 | } | 895 | } |
891 | } else { | ||
892 | schedule(); | ||
893 | } | 896 | } |
894 | } | 897 | } |
895 | set_current_state(TASK_RUNNING); | 898 | set_current_state(TASK_RUNNING); |