Messages in this thread | | | Date | Wed, 11 Nov 2015 16:28:16 -0700 | From | Pete Zaitcev <> | Subject | Re: [PATCH 1/1] usblp: do not set TASK_INTERRUPTIBLE before lock |
| |
On Mon, 2 Nov 2015 10:27:00 +0100 Jiri Slaby <jslaby@suse.cz> wrote:
> Signed-off-by: Jiri Slaby <jslaby@suse.cz> > --- a/drivers/usb/class/usblp.c > +++ b/drivers/usb/class/usblp.c > @@ -884,11 +884,11 @@ static int usblp_wwait(struct usblp *usblp, int nonblock) > > add_wait_queue(&usblp->wwait, &waita); > for (;;) { > - set_current_state(TASK_INTERRUPTIBLE); > if (mutex_lock_interruptible(&usblp->mut)) { > rc = -EINTR; > break; > } > + set_current_state(TASK_INTERRUPTIBLE); > rc = usblp_wtest(usblp, nonblock); > mutex_unlock(&usblp->mut); > if (rc <= 0)
I'm fully onboard with this. In the original "big cleanup" 317c67b8f, I got this right. But then I either missed that mutex_lock_interruptible() can set the state, or it didn't do it back then (it was in 2007), and the 7f477358e introduced the existing code.
Acked-By: Pete Zaitcev <zaitcev@yahoo.com>
-- Pete
| |