Weitao Wang
b8f0c19d48
USB: Fix xhci event ring dequeue pointer ERDP update issue
...
[ Upstream commit e91ac20889d1a26d077cc511365cd7ff4346a6f3 ]
In some situations software handles TRB events slower than adding TRBs.
If the number of TRB events to be processed in a given interrupt is exactly
the same as the event ring size 256, then the local variable
"event_ring_deq" that holds the initial dequeue position is equal to
software_dequeue after handling all 256 interrupts.
It will cause driver to not update ERDP to hardware,
Software dequeue pointer is out of sync with ERDP on interrupt exit.
On the next interrupt, the event ring may full but driver will not
update ERDP as software_dequeue is equal to ERDP.
[ 536.377115] xhci_hcd 0000:00:12.0: ERROR unknown event type 37
[ 566.933173] sd 8:0:0:0: [sdb] tag#27 uas_eh_abort_handler 0 uas-tag 7 inflight: CMD OUT
[ 566.933181] sd 8:0:0:0: [sdb] tag#27 CDB: Write(10) 2a 00 17 71 e6 78 00 00 08 00
[ 572.041186] xhci_hcd On some situataions,the0000:00:12.0: xHCI host not responding to stop endpoint command.
[ 572.057193] xhci_hcd 0000:00:12.0: Host halt failed, -110
[ 572.057196] xhci_hcd 0000:00:12.0: xHCI host controller not responding, assume dead
[ 572.057236] sd 8:0:0:0: [sdb] tag#26 uas_eh_abort_handler 0 uas-tag 6 inflight: CMD
[ 572.057240] sd 8:0:0:0: [sdb] tag#26 CDB: Write(10) 2a 00 38 eb cc d8 00 00 08 00
[ 572.057244] sd 8:0:0:0: [sdb] tag#25 uas_eh_abort_handler 0 uas-tag 5 inflight: CMD
Hardware ERDP is updated mid event handling if there are more than 128
events in an interrupt (half of ring size).
Fix this by updating the software local variable at the same time as
hardware ERDP.
[commit message rewording -Mathias]
Fixes: dc0ffbea5729 ("usb: host: xhci: update event ring dequeue pointer on purpose")
Reviewed-by: Peter Chen <peter.chen@kernel.org>
Signed-off-by: Weitao Wang <WeitaoWang-oc@zhaoxin.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20220408134823.2527272-2-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-05-09 09:03:23 +02:00
..
accessibility
acpi
ACPI: processor idle: Check for architectural support for LPI
2022-04-15 14:18:41 +02:00
amba
ARM: 9120/1: Revert "amba: make use of -1 IRQs warn"
2021-11-06 13:59:45 +01:00
android
binder: fix handling of error during copy
2022-01-27 09:19:38 +01:00
ata
ata: pata_marvell: Check the 'bmdma_addr' beforing reading
2022-04-27 13:50:48 +02:00
atm
atm: eni: Add check for dma_map_single
2022-03-23 09:12:07 +01:00
auxdisplay
auxdisplay: ht16k33: Fix frame buffer device blanking
2021-11-17 09:48:45 +01:00
base
arch_topology: Do not set llc_sibling if llc_id is invalid
2022-05-09 09:03:22 +02:00
bcma
block
floppy: disable FDRAWCMD by default
2022-05-09 09:03:20 +02:00
bluetooth
Bluetooth: btmtksdio: Fix kernel oops in btmtksdio_interrupt
2022-04-15 14:18:16 +02:00
bus
bus: ti-sysc: Use CLKDM_NOAUTO for dra7 dcan1 for errata i893
2021-10-13 10:08:19 +02:00
cdrom
char
virtio_console: eliminate anonymous module_init & module_exit
2022-04-15 14:18:36 +02:00
clk
clk: Enforce that disjoints limits are invalid
2022-04-15 14:18:35 +02:00
clocksource
clocksource: acpi_pm: fix return value of __setup handler
2022-04-15 14:18:05 +02:00
connector
counter
cpufreq
cpufreq: Fix initialization of min and max frequency QoS requests
2022-01-27 09:19:44 +01:00
cpuidle
cpuidle: Fix kobject memory leaks in error paths
2021-11-17 09:48:36 +01:00
crypto
crypto: ccp - ccp_dmaengine_unregister release dma channels
2022-04-15 14:18:05 +02:00
dax
dax: make sure inodes are flushed before destroy cache
2022-04-15 14:18:12 +02:00
dca
devfreq
dio
dma
dma: at_xdmac: fix a missing check on list iterator
2022-04-27 13:50:48 +02:00
dma-buf
udmabuf: validate ubuf->pagecount
2022-04-15 14:18:10 +02:00
edac
EDAC/synopsys: Read the error count from the correct register
2022-04-27 13:50:48 +02:00
eisa
extcon
firewire
firmware
firmware: google: Properly state IOMEM dependency
2022-04-15 14:18:20 +02:00
fpga
fsi
gnss
gpio
gpiolib: acpi: use correct format characters
2022-04-20 09:19:35 +02:00
gpu
drm/vc4: Use pm_runtime_resume_and_get to fix pm_runtime_get_sync() usage
2022-04-27 13:50:49 +02:00
greybus
greybus: svc: fix an error handling bug in gb_svc_hello()
2022-04-15 14:17:58 +02:00
hid
HID: i2c-hid: fix GET/SET_REPORT for unnumbered reports
2022-04-15 14:18:12 +02:00
hsi
HSI: core: Fix return freed object in hsi_new_client
2022-01-27 09:19:41 +01:00
hv
Drivers: hv: vmbus: Prevent load re-ordering when reading ring buffer
2022-04-20 09:19:36 +02:00
hwmon
hwmon: (pmbus) Add Vin unit off handling
2022-04-15 14:18:05 +02:00
hwspinlock
hwtracing
coresight: Fix TRCCONFIGR.QE sysfs interface
2022-04-15 14:17:57 +02:00
i2c
i2c: pasemi: Wait for write xfers to finish
2022-04-20 09:19:39 +02:00
i3c
ide
idle
iio
iio: magnetometer: ak8975: Fix the error handling in ak8975_power_on()
2022-05-09 09:03:21 +02:00
infiniband
IB/rdmavt: add lock to call to rvt_error_qp to prevent a race condition
2022-04-15 14:18:37 +02:00
input
Revert "Input: clear BTN_RIGHT/MIDDLE on buttonpads"
2022-04-15 14:18:00 +02:00
interconnect
iommu
iommu/arm-smmu-v3: fix event handling soft lockup
2022-04-15 14:18:33 +02:00
ipack
irqchip
irqchip/gic-v3: Fix GICR_CTLR.RWP polling
2022-04-15 14:18:40 +02:00
isdn
mISDN: change function names to avoid conflicts
2022-01-11 15:23:33 +01:00
leds
lightnvm
lightnvm: disable the subsystem
2022-05-09 09:03:20 +02:00
macintosh
mailbox
mailbox: tegra-hsp: Flush whole channel
2022-04-15 14:18:01 +02:00
mcb
md
dm integrity: fix memory corruption when tag_size is less than digest size
2022-04-20 09:19:39 +02:00
media
media: hdpvr: initialize dev->worker at hdpvr_register_videodev
2022-04-15 14:18:25 +02:00
memory
memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe
2022-04-20 09:19:34 +02:00
memstick
memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host()
2021-11-17 09:48:37 +01:00
message
mfd
mfd: asic3: Add missing iounmap() on error asic3_mfd_probe
2022-04-15 14:18:17 +02:00
misc
kgdbts: fix return value of __setup handler
2022-04-15 14:18:20 +02:00
mmc
mmc: mmci: stm32: correctly check all elements of sg list
2022-04-15 14:18:40 +02:00
mtd
mtd: rawnand: fix ecc parameters for mt7622
2022-05-09 09:03:23 +02:00
mux
net
hamradio: remove needs_free_netdev to avoid UAF
2022-05-09 09:03:20 +02:00
nfc
nfc: st21nfca: Fix potential buffer overflows in EVT_TRANSACTION
2022-03-28 08:46:43 +02:00
ntb
nubus
nvdimm
nvme
nvme-rdma: fix possible use-after-free in transport error_recovery work
2022-02-23 11:59:56 +01:00
nvmem
nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells
2021-10-20 11:40:14 +02:00
of
of: base: Improve argument length mismatch error
2022-01-27 09:19:51 +01:00
opp
opp: Fix return in _opp_add_static_v2()
2021-11-17 09:48:44 +01:00
oprofile
parisc
parisc: Fix CPU affinity for Lasi, WAX and Dino chips
2022-04-15 14:18:36 +02:00
parport
pci
PCI: pciehp: Add Qualcomm quirk for Command Completed erratum
2022-04-15 14:18:33 +02:00
pcmcia
pcmcia: fix setting of kthread task states
2022-01-27 09:19:37 +01:00
perf
arm_pmu: Validate single/group leader events
2022-04-27 13:50:50 +02:00
phy
phy: dphy: Correct lpx parameter and its derivatives(ta_{get,go,sure})
2022-04-15 14:18:18 +02:00
pinctrl
pinctrl: nuvoton: npcm7xx: Use %zu printk format for ARRAY_SIZE()
2022-04-15 14:18:29 +02:00
platform
platform/x86: samsung-laptop: Fix an unsigned comparison which can never be negative
2022-04-27 13:50:47 +02:00
pnp
power
power: supply: axp288-charger: Set Vhold to 4.4V
2022-04-15 14:18:33 +02:00
powercap
pps
ps3
ptp
ptp: replace snprintf with sysfs_emit
2022-04-15 14:18:32 +02:00
pwm
pwm: lpc18xx-sct: Initialize driver data and hardware before pwmchip_add()
2022-04-15 14:18:17 +02:00
rapidio
ras
regulator
regulator: wm8994: Add an off-on delay for WM8994 variant
2022-04-20 09:19:37 +02:00
remoteproc
remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_region
2022-04-15 14:18:19 +02:00
reset
reset: tegra-bpmp: Restore Handle errors in BPMP response
2022-04-27 13:50:47 +02:00
rpmsg
rpmsg: char: Fix race between the release of rpmsg_eptdev and cdev
2022-02-01 17:24:36 +01:00
rtc
rtc: wm8350: Handle error for wm8350_register_irq
2022-04-15 14:18:31 +02:00
s390
scsi: zfcp: Fix failed recovery on gone remote port with non-NPIV FCP devices
2022-02-01 17:24:33 +01:00
sbus
scsi
scsi: qedi: Fix failed disconnect handling
2022-04-27 13:50:48 +02:00
sfi
sh
maple: fix wrong return value of maple_bus_init().
2021-11-26 10:47:17 +01:00
siox
slimbus
soc
soc: ti: wkup_m3_ipc: Fix IRQ check in wkup_m3_ipc_probe
2022-04-15 14:18:07 +02:00
soundwire
spi
spi: atmel-quadspi: Fix the buswidth adjustment between spi-mem and controller
2022-04-27 13:50:50 +02:00
spmi
ssb
staging
staging: ion: Prevent incorrect reference counting behavour
2022-04-27 13:50:50 +02:00
target
scsi: target: tcmu: Fix possible page UAF
2022-04-20 09:19:36 +02:00
tc
tee
optee: use driver internal tee_context for some rpc
2022-03-02 11:41:04 +01:00
thermal
thermal: int340x: Increase bitmap size
2022-04-15 14:18:02 +02:00
thunderbolt
tty
serial: 8250: Correct the clock for EndRun PTP/1588 PCIe device
2022-05-09 09:03:22 +02:00
uio
usb
USB: Fix xhci event ring dequeue pointer ERDP update issue
2022-05-09 09:03:23 +02:00
vfio
vhost
tuntap: add sanity checks about msg_controllen in sendmsg
2022-04-15 14:18:34 +02:00
video
video: fbdev: udlfb: properly check endpoint type
2022-05-09 09:03:23 +02:00
virt
virtio
virtio: acknowledge all features before access
2022-03-16 13:21:48 +01:00
visorbus
vlynq
vme
w1
w1: w1_therm: fixes w1_seq for ds28ea00 sensors
2022-04-15 14:18:35 +02:00
watchdog
ar7: fix kernel builds for compiler test
2021-11-17 09:48:46 +01:00
xen
xen/gnttab: fix gnttab_end_foreign_access() without page specified
2022-03-11 11:22:39 +01:00
zorro
Kconfig
Makefile