linux-stable/drivers
Weitao Wang c8a002d04f USB: HCD: Fix URB giveback issue in tasklet function
commit 26c6c2f8a9 upstream.

Usb core introduce the mechanism of giveback of URB in tasklet context to
reduce hardware interrupt handling time. On some test situation(such as
FIO with 4KB block size), when tasklet callback function called to
giveback URB, interrupt handler add URB node to the bh->head list also.
If check bh->head list again after finish all URB giveback of local_list,
then it may introduce a "dynamic balance" between giveback URB and add URB
to bh->head list. This tasklet callback function may not exit for a long
time, which will cause other tasklet function calls to be delayed. Some
real-time applications(such as KB and Mouse) will see noticeable lag.

In order to prevent the tasklet function from occupying the cpu for a long
time at a time, new URBS will not be added to the local_list even though
the bh->head list is not empty. But also need to ensure the left URB
giveback to be processed in time, so add a member high_prio for structure
giveback_urb_bh to prioritize tasklet and schelule this tasklet again if
bh->head list is not empty.

At the same time, we are able to prioritize tasklet through structure
member high_prio. So, replace the local high_prio_bh variable with this
structure member in usb_hcd_giveback_urb.

Fixes: 94dfd7edfd ("USB: HCD: support giveback of URB in tasklet context")
Cc: stable <stable@kernel.org>
Reviewed-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Weitao Wang <WeitaoWang-oc@zhaoxin.com>
Link: https://lore.kernel.org/r/20220726074918.5114-1-WeitaoWang-oc@zhaoxin.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-08-25 11:11:13 +02:00
..
accessibility
acpi ACPI: video: Shortening quirk list by identifying Clevo by board_name only 2022-08-25 11:11:10 +02:00
amba ARM: 9120/1: Revert "amba: make use of -1 IRQs warn" 2021-11-12 14:28:22 +01:00
android binder: fix async_free_space accounting for empty parcels 2022-01-05 12:33:49 +01:00
ata ata: libata-core: fix NULL pointer deref in ata_host_alloc_pinfo() 2022-06-25 11:46:42 +02:00
atm atm: eni: Add check for dma_map_single 2022-03-23 09:01:35 +01:00
auxdisplay auxdisplay: ht16k33: Fix frame buffer device blanking 2021-11-26 11:40:35 +01:00
base x86/speculation/mmio: Add sysfs reporting for Processor MMIO Stale Data 2022-06-16 13:01:55 +02:00
bcma bcma: Fix memory leak for internally-handled cores 2021-09-22 11:45:22 +02:00
block xen/blkfront: force data bouncing when backend is untrusted 2022-07-07 17:31:18 +02:00
bluetooth Bluetooth: bfusb: fix division by zero in send path 2022-01-27 09:00:46 +01:00
bus bus: sunxi-rsb: Fix the return value of sunxi_rsb_device_create() 2022-05-12 12:17:07 +02:00
cdrom
char Revert "Revert "char/random: silence a lockdep splat with printk()"" 2022-07-29 17:06:50 +02:00
clk clk: at91: generated: consider range when calculating best rate 2022-05-25 08:41:20 +02:00
clocksource clocksource/drivers/sp804: Avoid error on multiple instances 2022-06-14 16:54:00 +02:00
connector
cpufreq cpufreq: pmac32-cpufreq: Fix refcount leak bug 2022-07-21 20:42:46 +02:00
cpuidle cpuidle: Fix kobject memory leaks in error paths 2021-11-26 11:40:29 +01:00
crypto crypto: ccp - ccp_dmaengine_unregister release dma channels 2022-04-20 09:08:13 +02:00
dax
dca
devfreq
dio
dma dmaengine: ti: Add missing put_device in ti_dra7_xbar_route_allocate 2022-07-12 16:27:29 +02:00
dma-buf dma-buf/sync_file: Don't leak fences on merge failure 2021-07-28 11:12:16 +02:00
edac EDAC: Fix calculation of returned address and next offset in edac_align_ptr() 2022-02-23 11:57:35 +01:00
eisa
extcon extcon: Modify extcon device to be created after driver data is set 2022-06-14 16:54:00 +02:00
firewire firewire: core: extend card->lock in fw_core_handle_bus_reset 2022-05-12 12:17:09 +02:00
firmware firmware: dmi-sysfs: Fix memory leak in dmi_sysfs_register_handle 2022-06-14 16:53:57 +02:00
fmc
fpga
fsi
gpio MIPS: Remove repetitive increase irq_err_count 2022-07-02 16:18:08 +02:00
gpu drm/amdgpu: Check BO's requested pinning domains against its preferred_domains 2022-08-25 11:11:12 +02:00
hid HID: wacom: Don't register pad_input for touch switch 2022-08-25 11:11:10 +02:00
hsi HSI: core: Fix return freed object in hsi_new_client 2022-01-27 09:00:54 +01:00
hv random: remove unused irq_flags argument from add_interrupt_randomness() 2022-06-25 11:46:30 +02:00
hwmon hwmon: (ibmaem) don't call platform_device_del() if platform_device_add() fails 2022-07-07 17:31:17 +02:00
hwspinlock
hwtracing coresight: cpu-debug: Replace mutex with mutex_trylock on panic notifier 2022-06-14 16:53:56 +02:00
i2c i2c: cadence: Change large transfer count reset logic to be unconditional 2022-07-29 17:06:50 +02:00
ide
idle
iio iio: light: isl29028: Fix the warning in isl29028_remove() 2022-08-25 11:11:12 +02:00
infiniband RDMA/qedr: Fix reporting QP timeout attribute 2022-07-07 17:31:16 +02:00
input Input: bcm5974 - set missing URB_NO_TRANSFER_DMA_MAP urb flag 2022-06-14 16:54:02 +02:00
iommu iommu/vt-d: Fix PCI bus rescan device hot add 2022-07-12 16:27:28 +02:00
ipack ipack: ipoctal: fix module reference leak 2021-10-06 15:05:09 +02:00
irqchip irqchip: or1k-pic: Undefine mask_ack for level triggered hardware 2022-07-21 20:42:47 +02:00
isdn mISDN: change function names to avoid conflicts 2022-01-11 13:57:38 +01:00
leds leds: ktd2692: Fix an error handling path 2021-07-20 16:17:41 +02:00
lightnvm lightnvm: disable the subsystem 2022-05-12 12:17:04 +02:00
macintosh macintosh/adb: fix oob read in do_adb_query() function 2022-08-25 11:11:10 +02:00
mailbox mailbox: forward the hrtimer if not queued and under a lock 2022-06-14 16:53:51 +02:00
mcb mcb: fix error handling in mcb_alloc_bus() 2021-10-06 15:05:05 +02:00
md md-raid10: fix KASAN warning 2022-08-25 11:11:12 +02:00
media media: pvrusb2: fix array-index-out-of-bounds in pvr2_i2c_core_init 2022-06-14 16:53:49 +02:00
memory memory: atmel-ebi: Fix missing of_node_put in atmel_ebi_probe 2022-04-20 09:08:31 +02:00
memstick memstick: jmb38x_ms: use appropriate free function in jmb38x_ms_alloc_host() 2021-11-26 11:40:30 +01:00
message
mfd misc: rtsx: set NULL intfdata when probe fails 2022-06-14 16:54:00 +02:00
misc misc: atmel-ssc: Fix IRQ check in ssc_probe 2022-06-25 11:46:44 +02:00
mmc mmc: core: Default to generic_cmd6_time as timeout in __mmc_switch() 2022-05-25 08:41:19 +02:00
mtd mtd: cfi_cmdset_0002: Use chip_ready() for write on S29GL064N 2022-06-14 16:54:02 +02:00
mux
net usbnet: Fix linkwatch use-after-free on disconnect 2022-08-25 11:11:12 +02:00
nfc NFC: nxp-nci: don't print header length mismatch on i2c error 2022-07-21 20:42:46 +02:00
ntb
nubus
nvdimm nvdimm: Fix badblocks clear off-by-one error 2022-07-07 17:31:16 +02:00
nvme nvme-pci: fix a NULL pointer dereference in nvme_alloc_admin_tags 2022-06-14 16:53:45 +02:00
nvmem nvmem: Fix shift-out-of-bound (UBSAN) with byte size cells 2021-10-20 10:42:04 +02:00
of fdt: Update CRC check for rng-seed 2022-07-02 16:18:10 +02:00
oprofile
parisc parisc: Fix CPU affinity for Lasi, WAX and Dino chips 2022-04-20 09:08:28 +02:00
parport parport: remove non-zero check on count 2021-09-22 11:45:31 +02:00
pci PCI: hv: Fix interrupt mapping for multi-MSI 2022-07-29 17:06:53 +02:00
pcmcia pcmcia: db1xxx_ss: restrict to MIPS_DB1XXX boards 2022-06-14 16:53:55 +02:00
perf perf: qcom_l2_pmu: fix an incorrect NULL check on list iterator 2022-04-20 09:08:30 +02:00
phy phy: qcom-qmp: fix reset-controller leak on probe errors 2022-06-14 16:53:55 +02:00
pinctrl pinctrl: sunxi: a83t: Fix NAND function name for some pins 2022-07-12 16:27:29 +02:00
platform platform/x86: hp-wmi: Ignore Sanitization Mode event 2022-07-21 20:42:46 +02:00
pnp
power power/reset: arm-versatile: Fix refcount leak in versatile_reboot_probe 2022-07-29 17:06:49 +02:00
powercap
pps
ps3
ptp ptp: replace snprintf with sysfs_emit 2022-04-20 09:08:26 +02:00
pwm pwm: lp3943: Fix duty calculation in case period was clamped 2022-06-14 16:53:56 +02:00
rapidio
ras
regulator regulator: pfuze100: Fix refcount leak in pfuze_parse_regulators_dt 2022-06-14 16:53:49 +02:00
remoteproc remoteproc: qcom_wcnss: Add missing of_node_put() in wcnss_alloc_memory_region 2022-04-20 09:08:19 +02:00
reset reset: ti-syscon: fix to_ti_syscon_reset_data macro 2021-07-28 11:12:14 +02:00
rpmsg rpmsg: qcom_smd: Fix irq_of_parse_and_map() return value 2022-06-14 16:53:56 +02:00
rtc rtc: mt6397: check return value after calling platform_get_resource() 2022-06-14 16:53:56 +02:00
s390 tty: the rest, stop using tty_schedule_flip() 2022-07-29 17:06:52 +02:00
sbus
scsi scsi: ufs: host: Hold reference returned by of_parse_phandle() 2022-08-25 11:11:09 +02:00
sfi
sh maple: fix wrong return value of maple_bus_init(). 2021-11-26 11:40:39 +01:00
sn
soc soc: rockchip: Fix refcount leak in rockchip_grf_init 2022-06-14 16:53:56 +02:00
spi spi: img-spfi: Fix pm_runtime_get_sync() error checking 2022-06-14 16:53:48 +02:00
spmi
ssb ssb: sdio: Don't overwrite const buffer if block_write fails 2021-07-20 16:17:30 +02:00
staging tty: the rest, stop using tty_schedule_flip() 2022-07-29 17:06:52 +02:00
target scsi: target: tcmu: Fix possible page UAF 2022-04-20 09:08:32 +02:00
tc
tee tee: handle lookup of shm with reference count 0 2022-01-05 12:33:48 +01:00
thermal thermal: int340x: Increase bitmap size 2022-04-20 09:08:12 +02:00
thunderbolt
tty tty: use new tty_insert_flip_string_and_push_buffer() in pty_write() 2022-07-29 17:06:53 +02:00
uio
usb USB: HCD: Fix URB giveback issue in tasklet function 2022-08-25 11:11:13 +02:00
uwb
vfio vfio: Use config not menuconfig for VFIO_NOIOMMU 2021-09-22 11:45:26 +02:00
vhost vringh: Fix loop descriptors check in the indirect cases 2022-06-14 16:54:01 +02:00
video fbcon: Disallow setting font bigger than screen size 2022-07-12 16:27:28 +02:00
virt
virtio virtio_mmio: Restore guest page size on resume 2022-07-21 20:42:46 +02:00
vlynq
vme
w1 w1: w1_therm: fixes w1_seq for ds28ea00 sensors 2022-04-20 09:08:28 +02:00
watchdog ar7: fix kernel builds for compiler test 2021-11-26 11:40:35 +01:00
xen xen/gntdev: Ignore failure to unmap INVALID_GRANT_HANDLE 2022-07-29 17:06:49 +02:00
zorro
Kconfig
Makefile