Use wait_event_timeout() instead of custom wait-queue code. Remove now unused variables. Signed-off-by: Nishanth Aravamudan Signed-off-by: Domen Puncer --- kj-domen/drivers/usb/class/usblp.c | 24 +++++++----------------- 1 files changed, 7 insertions(+), 17 deletions(-) diff -puN drivers/usb/class/usblp.c~wait_event_int_t-drivers_usb_class_usblp drivers/usb/class/usblp.c --- kj/drivers/usb/class/usblp.c~wait_event_int_t-drivers_usb_class_usblp 2005-03-02 10:43:45.000000000 +0100 +++ kj-domen/drivers/usb/class/usblp.c 2005-03-02 10:43:45.000000000 +0100 @@ -54,6 +54,7 @@ #include #include #include +#include #undef DEBUG #include @@ -622,10 +623,10 @@ done: static ssize_t usblp_write(struct file *file, const char __user *buffer, size_t count, loff_t *ppos) { - DECLARE_WAITQUEUE(wait, current); struct usblp *usblp = file->private_data; - int timeout, err = 0, transfer_length = 0; + int err = 0, transfer_length = 0; size_t writecount = 0; + long ret; while (writecount < count) { if (!usblp->wcomplete) { @@ -635,21 +636,10 @@ static ssize_t usblp_write(struct file * return writecount ? writecount : -EAGAIN; } - timeout = USBLP_WRITE_TIMEOUT; - add_wait_queue(&usblp->wait, &wait); - while (timeout) { - if (signal_pending(current)) { - remove_wait_queue(&usblp->wait, &wait); - return writecount ? writecount : -EINTR; - } - set_current_state(TASK_INTERRUPTIBLE); - if (usblp->wcomplete) { - set_current_state(TASK_RUNNING); - break; - } - timeout = schedule_timeout(timeout); - } - remove_wait_queue(&usblp->wait, &wait); + ret = wait_event_interruptible_timeout(usblp->wait, + usblp->wcomplete, USBLP_WRITE_TIMEOUT); + if (ret == -ERESTARTSYS) + return writecount ? writecount : -EINTR; } down (&usblp->sem); _