Skip to content

Commit

Permalink
Revert "usb: cdc-wdm: close race between read and workqueue"
Browse files Browse the repository at this point in the history
commit 1607830 upstream.

This reverts commit 339f836.

It has been found to cause problems in a number of Chromebook devices,
so revert the change until it can be brought back in a safe way.

Link: https://lore.kernel.org/r/385a3519-b45d-48c5-a6fd-a3fdb6bec92f@chromium.org
Reported-by:: Aleksander Morgado <aleksandermj@chromium.org>
Fixes: 339f836 ("usb: cdc-wdm: close race between read and workqueue")
Cc: stable <stable@kernel.org>
Cc: Oliver Neukum <oneukum@suse.com>
Cc: Bjørn Mork <bjorn@mork.no>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
gregkh committed Apr 27, 2024
1 parent 4b983d9 commit e4e47e4
Showing 1 changed file with 1 addition and 5 deletions.
6 changes: 1 addition & 5 deletions drivers/usb/class/cdc-wdm.c
Expand Up @@ -485,7 +485,6 @@ static ssize_t wdm_write
static int service_outstanding_interrupt(struct wdm_device *desc)
{
int rv = 0;
int used;

/* submit read urb only if the device is waiting for it */
if (!desc->resp_count || !--desc->resp_count)
Expand All @@ -500,10 +499,7 @@ static int service_outstanding_interrupt(struct wdm_device *desc)
goto out;
}

used = test_and_set_bit(WDM_RESPONDING, &desc->flags);
if (used)
goto out;

set_bit(WDM_RESPONDING, &desc->flags);
spin_unlock_irq(&desc->iuspin);
rv = usb_submit_urb(desc->response, GFP_KERNEL);
spin_lock_irq(&desc->iuspin);
Expand Down

0 comments on commit e4e47e4

Please sign in to comment.