kernel_samsung_a53x/drivers/usb
Mathias Nyman f04d08b229 xhci: Set correct transferred length for cancelled bulk transfers
commit f0260589b439e2637ad54a2b25f00a516ef28a57 upstream.

The transferred length is set incorrectly for cancelled bulk
transfer TDs in case the bulk transfer ring stops on the last transfer
block with a 'Stop - Length Invalid' completion code.

length essentially ends up being set to the requested length:
urb->actual_length = urb->transfer_buffer_length

Length for 'Stop - Length Invalid' cases should be the sum of all
TRB transfer block lengths up to the one the ring stopped on,
_excluding_ the one stopped on.

Fix this by always summing up TRB lengths for 'Stop - Length Invalid'
bulk cases.

This issue was discovered by Alan Stern while debugging
https://bugzilla.kernel.org/show_bug.cgi?id=218890, but does not
solve that bug. Issue is older than 4.10 kernel but fix won't apply
to those due to major reworks in that area.

Tested-by: Pierre Tomon <pierretom+12@ik.me>
Cc: stable@vger.kernel.org # v4.10+
Cc: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20240611120610.3264502-2-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2024-11-19 14:19:02 +01:00
..
atm Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
c67x00 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
cdns3 usb: cdns3: fix memory double free when handle zero packet 2024-11-18 22:25:39 +01:00
chipidea usb: chipidea: wait controller resume finished for wakeup irq 2024-11-18 12:12:46 +01:00
class USB: class: cdc-wdm: Fix CPU lockup caused by excessive log messages 2024-11-19 14:19:02 +01:00
common Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
core usb: Fix regression caused by invalid ep0 maxpacket in virtual SuperSpeed device 2024-11-19 11:32:48 +01:00
dwc2 usb: dwc2: host: Fix dereference issue in DDMA completion flow. 2024-11-19 11:32:23 +01:00
dwc3 usb: dwc: ep0: Update request status in dwc3_ep0_stall_restart 2024-11-18 12:12:46 +01:00
early Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
gadget usb: gadget: f_fs: Fix race between aio_cancel() and AIO request complete 2024-11-19 14:19:01 +01:00
host xhci: Set correct transferred length for cancelled bulk transfers 2024-11-19 14:19:02 +01:00
image Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
isp1760 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
misc Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
mon usb: mon: Fix atomicity violation in mon_bin_vma_fault 2024-11-18 12:12:47 +01:00
mtu3 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
musb usb: musb: Modify the "HWVers" register address 2024-11-08 11:25:49 +01:00
notify Import A536BXXSAEXE1 2024-06-15 16:07:28 -03:00
notify_lsi Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
phy Revert "usb: phy: generic: Get the vbus supply" 2024-11-19 09:22:49 +01:00
renesas_usbhs Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
roles usb: roles: don't get/set_role() when usb_role_switch is unregistered 2024-11-18 22:25:39 +01:00
serial USB: serial: option: add Telit FN920C04 rmnet compositions 2024-11-19 11:32:22 +01:00
storage USB: usb-storage: Prevent divide-by-0 error in isd200_ata_command 2024-11-19 09:22:39 +01:00
typec usb: typec: ucsi: displayport: Fix potential deadlock 2024-11-19 12:26:50 +01:00
usbip kcov: Remove kcov include from sched.h and move it to its users. 2024-11-19 11:32:46 +01:00
Kconfig Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Kconfig.variant1 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
Makefile.variant1 Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00
usb-skeleton.c Import A536BXXU9EXDC 2024-06-15 16:02:09 -03:00