linux/drivers/usb/musb
Bin Liu dbac5d07d1 usb: musb: host: don't start next rx urb if current one failed
urb->status is set when endpoint csr RXSTALL, H_ERROR, DATAERROR or
INCOMPRX bit is set. Those bits mean a broken pipe, so don't start next
urb when any of these bits is set by checking urb->status.

To minimize the risk of regression, only do so for RX, until we have a
test case to understand the behavior of TX.

The patch fixes system freeze issue caused by repeatedly invoking RX ISR
while removing a usb uart device connected to a hub, in which case the
hub has no chance to report the disconnect event due to the kernel is
busy in processing the RX interrupt flooding.

Fix checkpatch complaint (qh != NULL) as while.

Reported-by: Max Uvarov <muvarov@gmail.com>
Tested-by: Yegor Yefremov <yegorslists@googlemail.com>
Signed-off-by: Bin Liu <b-liu@ti.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2016-06-01 14:58:59 -07:00
..
am35x.c usb: musb: am35x: fix build warnings 2015-05-27 12:29:57 -05:00
blackfin.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
blackfin.h
cppi_dma.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
cppi_dma.h
da8xx.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
davinci.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
davinci.h
jz4740.c usb: musb: jz4740: fix error check of usb_get_phy() 2016-04-26 14:50:02 -07:00
Kconfig usb: add HAS_IOMEM dependency to USB_MUSB_HDRC 2016-02-14 17:09:56 -08:00
Makefile usb: musb: sunxi: Add support for the Allwinner sunxi musb controller 2015-07-29 09:59:20 -05:00
musb_am335x.c usb: musb: Fix panic upon musb_am335x module removal 2014-06-27 10:53:06 -05:00
musb_core.c usb: musb: core: added missing const qualifier to musb_hdrc_platform_data::config 2016-03-04 15:14:46 +02:00
musb_core.h usb: musb: core: added missing const qualifier to musb_hdrc_platform_data::config 2016-03-04 15:14:46 +02:00
musb_cppi41.c usb: musb: fix cppi channel teardown for isoch transfer 2015-09-21 14:42:36 -05:00
musb_debug.h
musb_debugfs.c usb: musb: add softconnect for host mode 2015-05-07 13:49:23 -05:00
musb_dma.h usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
musb_dsps.c usb: common: of_usb_get_dr_mode to usb_get_dr_mode 2015-09-27 10:54:31 -05:00
musb_gadget.c usb: musb: gadget: nuke endpoint before setting its descriptor to NULL 2016-04-26 14:50:02 -07:00
musb_gadget.h usb: musb: add Kconfig options for HOST, GAGDET or DUAL_ROLE modes 2013-05-28 19:22:23 +03:00
musb_gadget_ep0.c usb: musb: gadget: use common is_selfpowered 2015-01-29 10:35:43 -06:00
musb_host.c usb: musb: host: don't start next rx urb if current one failed 2016-06-01 14:58:59 -07:00
musb_host.h usb: musb: fix prototype for musb_port_reset 2013-12-20 15:05:43 -06:00
musb_io.h usb: musb: Make busctl_offset an io-op rather then a define 2015-05-26 10:46:54 -05:00
musb_regs.h usb: musb: Make busctl_offset an io-op rather then a define 2015-05-26 10:46:54 -05:00
musb_virthub.c usb: musb: host: rely on port_mode to call musb_start() 2015-07-06 12:34:07 -05:00
musbhsdma.c usb: musb: use %pad format string from dma_addr_t 2016-03-04 15:14:30 +02:00
musbhsdma.h usb: musb: remove generic_interrupt 2012-11-06 15:32:13 +02:00
omap2430.c usb: musb: Fix unbalanced pm_runtime_enable 2015-12-16 10:07:28 -06:00
omap2430.h usb: start using the control module driver 2013-01-25 12:27:24 +02:00
sunxi.c usb: musb: sunxi: support module autoloading 2016-03-04 15:14:38 +02:00
tusb6010.c usb: musb: Set up function pointers for DMA 2015-05-07 13:35:51 -05:00
tusb6010.h usb: musb: Fix up DMA related macros 2015-05-07 13:35:46 -05:00
tusb6010_omap.c usb: musb: use %pad format string from dma_addr_t 2016-03-04 15:14:30 +02:00
ux500.c usb: musb: ux500: Fix NULL pointer dereference at system PM 2016-02-03 20:03:40 +02:00
ux500_dma.c usb: musb/ux500: remove duplicate check for dma_is_compatible 2016-03-04 15:14:30 +02:00