aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/nfc/nfcmrvl/usb.c
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2018-06-14 18:36:46 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-06-28 19:36:07 +0900
commit2df6948428542c5a22fbf9c7c36c66ccc9363c7d (patch)
treebcdf8346983bf0da88cc971d3285ccd4a1df43a2 /drivers/nfc/nfcmrvl/usb.c
parentusb: legousbtower: use irqsave() in USB's complete callback (diff)
downloadlinux-dev-2df6948428542c5a22fbf9c7c36c66ccc9363c7d.tar.xz
linux-dev-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/usb.c')
0 files changed, 0 insertions, 0 deletions