linux/drivers/usb/dwc2
Oliver Neukum 451c5a6172 USB: dwc2: write HCINT with INTMASK applied
commit 0583bc776c upstream.

dwc2_hc_n_intr() writes back INTMASK as read but evaluates it
with intmask applied. In stress testing this causes spurious
interrupts like this:

[Mon Aug 14 10:51:07 2023] dwc2 3f980000.usb: dwc2_hc_chhltd_intr_dma: Channel 7 - ChHltd set, but reason is unknown
[Mon Aug 14 10:51:07 2023] dwc2 3f980000.usb: hcint 0x00000002, intsts 0x04600001
[Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: dwc2_hc_chhltd_intr_dma: Channel 0 - ChHltd set, but reason is unknown
[Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: hcint 0x00000002, intsts 0x04600001
[Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: dwc2_hc_chhltd_intr_dma: Channel 4 - ChHltd set, but reason is unknown
[Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: hcint 0x00000002, intsts 0x04600001
[Mon Aug 14 10:51:08 2023] dwc2 3f980000.usb: dwc2_update_urb_state_abn(): trimming xfer length

Applying INTMASK prevents this. The issue exists in all versions of the
driver.

Signed-off-by: Oliver Neukum <oneukum@suse.com>
Tested-by: Ivan Ivanov <ivan.ivanov@suse.com>
Tested-by: Andrea della Porta <andrea.porta@suse.com>
Link: https://lore.kernel.org/r/20231115144514.15248-1-oneukum@suse.com
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
History 2023-12-03 07:32:12 +01:00
..
core.c usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
core.h usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
core_intr.c usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
debug.h USB: dwc2: Use the correct style for SPDX License Identifier 2020-05-05 10:58:50 +03:00
debugfs.c usb: dwc2: add otg_rev and otg_caps information for gadget driver 2021-10-25 09:20:26 +02:00
drd.c usb: dwc2: drd: fix inconsistent mode if role-switch-default-mode="host" 2023-03-30 12:49:22 +02:00
gadget.c usb: dwc2: gadget: remove D+ pull-up while no vbus with usb-role-switch 2022-06-24 13:37:27 +02:00
hcd.c usb: dwc2: fix possible NULL pointer dereference caused by driver concurrency 2023-11-20 11:52:10 +01:00
hcd.h usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
hcd_ddma.c usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
hcd_intr.c USB: dwc2: write HCINT with INTMASK applied 2023-12-03 07:32:12 +01:00
hcd_queue.c usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
hw.h usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
Kconfig usb: dwc2: override PHY input signals with usb role switch support 2020-10-02 13:29:13 +03:00
Makefile usb: dwc2: override PHY input signals with usb role switch support 2020-10-02 13:29:13 +03:00
params.c usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
pci.c usb: dwc2: Remove redundant license text 2022-09-22 15:52:29 +02:00
platform.c usb: dwc2: Fix some error handling paths 2023-07-19 16:21:49 +02:00