diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2018-06-14 18:36:46 +0200 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2018-06-28 12:36:07 +0200 |
commit | 2df6948428542c5a22fbf9c7c36c66ccc9363c7d (patch) | |
tree | bcdf8346983bf0da88cc971d3285ccd4a1df43a2 /drivers/nfc/nfcmrvl | |
parent | usb: legousbtower: use irqsave() in USB's complete callback (diff) | |
download | linux-2df6948428542c5a22fbf9c7c36c66ccc9363c7d.tar.xz linux-2df6948428542c5a22fbf9c7c36c66ccc9363c7d.zip |
USB: cdc-wdm: don't enable interrupts in USB-giveback
In the code path
__usb_hcd_giveback_urb()
-> wdm_in_callback()
-> service_outstanding_interrupt()
The function service_outstanding_interrupt() will unconditionally enable
interrupts during unlock and invoke usb_submit_urb() with GFP_KERNEL.
If the HCD completes in BH (like ehci does) then the context remains
atomic due local_bh_disable() and enabling interrupts does not change
this.
Defer the error case handling to a workqueue as suggested by Oliver
Neukum. In case of an error the worker performs the read out and wakes
the user.
Fixes: c1da59dad0eb ("cdc-wdm: Clear read pipeline in case of error")
Cc: Robert Foss <robert.foss@collabora.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Oliver Neukum <oneukum@suse.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/nfc/nfcmrvl')
0 files changed, 0 insertions, 0 deletions