kernel_samsung_a53x/drivers/usb
Peng Hongchi 3050eda410 usb: dwc2: gadget: Don't write invalid mapped sg entries into dma_desc with iommu enabled
[ Upstream commit 1134289b6b93d73721340b66c310fd985385e8fa ]

When using dma_map_sg() to map the scatterlist with iommu enabled,
the entries in the scatterlist can be mergerd into less but longer
entries in the function __finalise_sg(). So that the number of
valid mapped entries is actually smaller than ureq->num_reqs,and
there are still some invalid entries in the scatterlist with
dma_addr=0xffffffff and len=0. Writing these invalid sg entries
into the dma_desc can cause a data transmission error.

The function dma_map_sg() returns the number of valid map entries
and the return value is assigned to usb_request::num_mapped_sgs in
function usb_gadget_map_request_by_dev(). So that just write valid
mapped entries into dma_desc according to the usb_request::num_mapped_sgs,
and set the IOC bit if it's the last valid mapped entry.

This patch poses no risk to no-iommu situation, cause
ureq->num_mapped_sgs equals ureq->num_sgs while using dma_direct_map_sg()
to map the scatterlist whith iommu disabled.

Signed-off-by: Peng Hongchi <hongchi.peng@siengine.com>
Link: https://lore.kernel.org/r/20240523100315.7226-1-hongchi.peng@siengine.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2025-01-15 16:29:40 +01:00
..
atm usb: atm: cxacru: fix endpoint checking in cxacru_bind() 2024-11-19 14:19:34 +01:00
c67x00
cdns3 usb: cdns3: Add quirk flag to enable suspend residency 2025-01-15 16:29:40 +01:00
chipidea usb: chipidea: udc: handle USB Error Interrupt if IOC not set 2024-12-17 13:24:32 +01:00
class Revert "USB: usbtmc: prevent kernel-usb-infoleak" 2024-11-24 00:23:31 +01:00
common
core usb: core: sysfs: Unmerge @usb3_hardware_lpm_attr_group in remove_power_attributes() 2024-11-23 23:20:55 +01:00
dwc2 usb: dwc2: gadget: Don't write invalid mapped sg entries into dma_desc with iommu enabled 2025-01-15 16:29:40 +01:00
dwc3 usb: dwc3: gadget: Fix looping of queued SG entries 2024-12-17 13:24:20 +01:00
early
gadget usb: gadget: u_serial: Fix the issue that gs_start_io crashed due to accessing null pointer 2025-01-02 17:00:49 +01:00
host usb: ehci-hcd: fix call balance of clocks handling routines 2025-01-02 17:00:49 +01:00
image
isp1760
misc USB: chaoskey: Fix possible deadlock chaoskey_list_lock 2024-12-17 13:24:16 +01:00
mon
mtu3
musb usb: musb: sunxi: Fix accessing an released usb phy 2024-11-30 02:33:26 +01:00
notify
notify_lsi
phy usb: phy: Fix API devm_usb_put_phy() can not release the phy 2024-11-23 23:22:04 +01:00
renesas_usbhs
roles
serial USB: serial: option: add Quectel RG650V 2024-11-30 02:33:26 +01:00
storage Revert "usb: uas: set host status byte on data completion error" 2024-11-24 00:23:42 +01:00
typec drivers: sm5714_typec.c: Specify enum typec_port_type 2024-12-17 21:57:37 +01:00
usbip usbip: Don't submit special requests twice 2024-11-23 23:20:58 +01:00
Kconfig
Kconfig.variant1
Makefile
Makefile.variant1
usb-skeleton.c