TencentOS-kernel/drivers/usb
Yoshihiro Shimoda 2f44c0434c usb: renesas_usbhs: getting residue from callback_result
[ Upstream commit ea0efd687b01355cd799c8643d0c636ba4859ffc ]

This driver assumed that dmaengine_tx_status() could return
the residue even if the transfer was completed. However,
this was not correct usage [1] and this caused to break getting
the residue after the commit 24461d9792c2 ("dmaengine:
virt-dma: Fix access after free in vchan_complete()") actually.
So, this is possible to get wrong received size if the usb
controller gets a short packet. For example, g_zero driver
causes "bad OUT byte" errors.

The usb-dmac driver will support the callback_result, so this
driver can use it to get residue correctly. Note that even if
the usb-dmac driver has not supported the callback_result yet,
this patch doesn't cause any side-effects.

[1]
https://lore.kernel.org/dmaengine/20200616165550.GP2324254@vkoul-mobl/

Reported-by: Hien Dang <hien.dang.eb@renesas.com>
Fixes: 24461d9792c2 ("dmaengine: virt-dma: Fix access after free in vchan_complete()")
Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
Link: https://lore.kernel.org/r/1592482277-19563-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2021-03-16 16:31:01 +08:00
..
atm Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
c67x00 Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
cdns3 usb: cdns3: ep0: add spinlock for cdns3_check_new_setup 2021-03-16 16:30:52 +08:00
chipidea usb: chipidea: msm: Ensure proper controller reset using role switch API 2021-03-16 16:27:38 +08:00
class cdc-acm: Add DISABLE_ECHO quirk for Microchip/SMSC chip 2021-03-16 16:30:54 +08:00
common Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
core usb: add USB_QUIRK_DELAY_INIT for Logitech C922 2021-03-16 16:30:50 +08:00
dwc2 usb: dwc2: Postponed gadget registration to the udc class driver 2021-03-16 16:30:50 +08:00
dwc3 usb: dwc3: gadget: Properly handle failed kick_transfer 2021-03-16 16:30:12 +08:00
early USB: early: Handle AMD's spec-compliant identifiers, too 2021-03-16 16:26:55 +08:00
gadget usb: gadget: udc: Potential Oops in error handling code 2021-03-16 16:31:01 +08:00
host xhci: Return if xHCI doesn't support LPM 2021-03-16 16:30:54 +08:00
image Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
isp1760 Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
misc USB: sisusbvga: Change port variable from signed to unsigned 2021-03-16 16:26:55 +08:00
mon Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
mtu3 Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
musb usb: musb: Fix runtime PM imbalance on error 2021-03-16 16:28:52 +08:00
phy usb: phy: twl6030-usb: Fix a resource leak in an error handling path in 'twl6030_usb_probe()' 2021-03-16 16:28:29 +08:00
renesas_usbhs usb: renesas_usbhs: getting residue from callback_result 2021-03-16 16:31:01 +08:00
roles Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
serial USB: serial: ch341: add basis for quirk detection 2021-03-16 16:28:51 +08:00
storage USB: uas: add quirk for LaCie 2Big Quadra 2021-03-16 16:27:38 +08:00
typec usb: typec: tcpci_rt1711h: avoid screaming irq causing boot hangs 2021-03-16 16:30:51 +08:00
usbip Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
Kconfig Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
Makefile Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00
usb-skeleton.c Init Repo base on linux 5.4.32 long term, and add base tlinux kernel interfaces. 2021-03-16 11:01:34 +08:00