linux-stable/drivers/usb
Thinh Nguyen 0e5668ed7b usb: dwc3: gadget: Fix event pending check
commit 7441b27338 upstream.

The DWC3_EVENT_PENDING flag is used to protect against invalid call to
top-half interrupt handler, which can occur when there's a delay in
software detection of the interrupt line deassertion.

However, the clearing of this flag was done prior to unmasking the
interrupt line, creating opportunity where the top-half handler can
come. This breaks the serialization and creates a race between the
top-half and bottom-half handler, resulting in losing synchronization
between the controller and the driver when processing events.

To fix this, make sure the clearing of the DWC3_EVENT_PENDING is done at
the end of the bottom-half handler.

Fixes: d325a1de49 ("usb: dwc3: gadget: Prevent losing events in event cache")
Cc: stable@vger.kernel.org
Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
Link: https://lore.kernel.org/r/8670aaf1cf52e7d1e6df2a827af2d77263b93b75.1656380429.git.Thinh.Nguyen@synopsys.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-07-21 21:20:18 +02:00
..
atm
c67x00
cdns3 usb: cdns3: Fix issue for clear halt endpoint 2022-05-09 09:04:59 +02:00
chipidea usb: chipidea: udc: check request status before setting device address 2022-06-29 08:59:51 +02:00
class usb: cdc-wdm: fix reading stuck on device close 2022-05-18 10:23:46 +02:00
common usb: ulpi: Call of_node_put correctly 2022-02-16 12:54:28 +01:00
core USB: hcd-pci: Fully suspend across freeze/thaw cycle 2022-06-14 18:32:42 +02:00
dwc2 usb: dwc2: Fix memory leak in dwc2_hcd_init 2022-06-22 14:13:19 +02:00
dwc3 usb: dwc3: gadget: Fix event pending check 2022-07-21 21:20:18 +02:00
early Revert "usb: early: convert to readl_poll_timeout_atomic()" 2021-12-22 09:30:56 +01:00
gadget USB: gadget: Fix double-free bug in raw_gadget driver 2022-06-29 08:59:51 +02:00
host xhci-pci: Allow host runtime PM as default for Intel Meteor Lake xHCI 2022-06-29 08:59:51 +02:00
image
isp1760
misc usb: misc: fix improper handling of refcount in uss720_probe() 2022-05-09 09:04:58 +02:00
mon
mtu3 usb: mtu3: fix USB 3.0 dual-role-switch from device to host 2022-05-09 09:04:56 +02:00
musb usb: musb: Fix missing of_node_put() in omap2430_probe 2022-06-14 18:32:31 +02:00
phy usb: phy: generic: Get the vbus supply 2022-05-09 09:04:59 +02:00
renesas_usbhs usb: renesas_usbhs: Fix superfluous irqs happen after usb_pkt_pop() 2021-07-28 14:35:44 +02:00
roles usb: roles: Call try_module_get() from usb_role_switch_find_by_fwnode() 2021-05-14 09:49:55 +02:00
serial USB: serial: ftdi_sio: add Belimo device ids 2022-07-21 21:20:18 +02:00
storage USB: storage: karma: fix rio_karma_init return 2022-06-14 18:32:31 +02:00
typec usb: typec: add missing uevent when partner support PD 2022-07-21 21:20:18 +02:00
usbip usb: usbip: add missing device lock on tweak configuration cmd 2022-06-14 18:32:31 +02:00
Kconfig
Makefile
usb-skeleton.c