diff options
author | Johan Hovold <johan@kernel.org> | 2019-11-05 09:41:44 +0100 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-11-07 11:17:51 +0100 |
commit | 728fcd55e9ac3c7058949d78a443bedc7251b320 (patch) | |
tree | 1b251ab018be0c89a7e6382e1d23f13a25b362fd | |
parent | 835bd2b5672b632b7aedf29e48e3453c182a1b9a (diff) |
USB: legousbtower: drop redundant interrupt-in running flag
Drop the redundant interrupt-in-running flag, which tried to keep track
of when the interrupt-in URB was in flight. This isn't needed since we
can stop the URB unconditionally in tower_abort_transfers() and the URB
can not be submitted while usb_kill_urb() is running anyway.
Signed-off-by: Johan Hovold <johan@kernel.org>
Link: https://lore.kernel.org/r/20191105084152.16322-7-johan@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/usb/misc/legousbtower.c | 21 |
1 files changed, 5 insertions, 16 deletions
diff --git a/drivers/usb/misc/legousbtower.c b/drivers/usb/misc/legousbtower.c index 937bce23adf0..33533faa019e 100644 --- a/drivers/usb/misc/legousbtower.c +++ b/drivers/usb/misc/legousbtower.c @@ -206,7 +206,6 @@ struct lego_usb_tower { struct usb_endpoint_descriptor* interrupt_in_endpoint; struct urb* interrupt_in_urb; int interrupt_in_interval; - int interrupt_in_running; int interrupt_in_done; char* interrupt_out_buffer; @@ -379,7 +378,6 @@ static int tower_open (struct inode *inode, struct file *file) dev, dev->interrupt_in_interval); - dev->interrupt_in_running = 1; dev->interrupt_in_done = 0; mb(); @@ -387,7 +385,6 @@ static int tower_open (struct inode *inode, struct file *file) if (retval) { dev_err(&dev->udev->dev, "Couldn't submit interrupt_in_urb %d\n", retval); - dev->interrupt_in_running = 0; goto unlock_exit; } @@ -450,11 +447,7 @@ exit: static void tower_abort_transfers (struct lego_usb_tower *dev) { /* shutdown transfer */ - if (dev->interrupt_in_running) { - dev->interrupt_in_running = 0; - mb(); - usb_kill_urb(dev->interrupt_in_urb); - } + usb_kill_urb(dev->interrupt_in_urb); if (dev->interrupt_out_busy) usb_kill_urb(dev->interrupt_out_urb); } @@ -731,15 +724,11 @@ static void tower_interrupt_in_callback (struct urb *urb) } resubmit: - /* resubmit if we're still running */ - if (dev->interrupt_in_running) { - retval = usb_submit_urb (dev->interrupt_in_urb, GFP_ATOMIC); - if (retval) - dev_err(&dev->udev->dev, - "%s: usb_submit_urb failed (%d)\n", - __func__, retval); + retval = usb_submit_urb(dev->interrupt_in_urb, GFP_ATOMIC); + if (retval) { + dev_err(&dev->udev->dev, "%s: usb_submit_urb failed (%d)\n", + __func__, retval); } - exit: dev->interrupt_in_done = 1; wake_up_interruptible (&dev->read_wait); |