linux-stable/drivers
Joao Pinto e151ae1ee0 Avoid hw_desc array overrun in dw-axi-dmac
[ Upstream commit 333e11bf47 ]

I have a use case where nr_buffers = 3 and in which each descriptor is composed by 3
segments, resulting in the DMA channel descs_allocated to be 9. Since axi_desc_put()
handles the hw_desc considering the descs_allocated, this scenario would result in a
kernel panic (hw_desc array will be overrun).

To fix this, the proposal is to add a new member to the axi_dma_desc structure,
where we keep the number of allocated hw_descs (axi_desc_alloc()) and use it in
axi_desc_put() to handle the hw_desc array correctly.

Additionally I propose to remove the axi_chan_start_first_queued() call after completing
the transfer, since it was identified that unbalance can occur (started descriptors can
be interrupted and transfer ignored due to DMA channel not being enabled).

Signed-off-by: Joao Pinto <jpinto@synopsys.com>
Link: https://lore.kernel.org/r/1711536564-12919-1-git-send-email-jpinto@synopsys.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2024-06-27 13:49:04 +02:00
..
accel kthread: add kthread_stop_put 2024-06-12 11:12:52 +02:00
accessibility speakup: Fix sizeof() vs ARRAY_SIZE() bug 2024-06-12 11:11:18 +02:00
acpi ACPI: video: Add backlight=native quirk for Lenovo Slim 7 16ARH7 2024-06-27 13:49:02 +02:00
amba
android binder: fix max_thread type inconsistency 2024-05-25 16:22:54 +02:00
ata ata: pata_legacy: make legacy_exit() work again 2024-06-16 13:47:33 +02:00
atm
auxdisplay
base drivers: core: synchronize really_probe() and dev_uevent() 2024-06-21 14:38:37 +02:00
bcma
block null_blk: Print correct max open zones limit in null_init_zoned_dev() 2024-06-21 14:38:40 +02:00
bluetooth Bluetooth: ath3k: Fix multiple issues reported by checkpatch.pl 2024-06-27 13:49:02 +02:00
bus
cache
cdrom
cdx
char tpm_tis: Do *not* flush uninitialized work 2024-06-16 13:47:41 +02:00
clk clkdev: Update clkdev id usage to allow for longer names 2024-06-21 14:38:38 +02:00
clocksource
comedi
connector
counter
cpufreq cpufreq: amd-pstate: Fix the inconsistency in max frequency units 2024-06-16 13:47:41 +02:00
cpuidle
crypto crypto: hisilicon/qm - Add the err memory release process to qm uninit 2024-06-27 13:49:00 +02:00
cxl cxl/region: Fix memregion leaks in devm_cxl_add_region() 2024-06-21 14:38:26 +02:00
dax
dca
devfreq
dio
dma Avoid hw_desc array overrun in dw-axi-dmac 2024-06-27 13:49:04 +02:00
dma-buf dma-buf: handle testing kthreads creation failure 2024-06-21 14:38:40 +02:00
edac EDAC/igen6: Convert PCIBIOS_* return codes to errnos 2024-06-16 13:47:47 +02:00
eisa
extcon extcon: max8997: select IRQ_DOMAIN instead of depending on it 2024-06-12 11:12:27 +02:00
firewire firewire: ohci: fulfill timestamp for some local asynchronous transaction 2024-05-17 12:02:30 +02:00
firmware firmware: qcom_scm: disable clocks if qcom_scm_bw_enable() fails 2024-06-21 14:38:21 +02:00
fpga fpga: region: add owner module and take its refcount 2024-06-12 11:12:23 +02:00
fsi
gnss
gpio gpio: tqmx86: fix broken IRQ_TYPE_EDGE_BOTH interrupt type 2024-06-21 14:38:30 +02:00
gpu drm/lima: mask irqs in timeout path before hard reset 2024-06-27 13:49:03 +02:00
greybus greybus: Fix use-after-free bug in gb_interface_release due to race condition. 2024-06-21 14:38:48 +02:00
hid HID: asus: fix more n-key report descriptors if n-key quirked 2024-06-27 13:49:02 +02:00
hsi
hte
hv Drivers: hv: vmbus: Don't free ring buffers that couldn't be re-encrypted 2024-05-17 12:02:17 +02:00
hwmon hwmon: (shtc1) Fix property misspelling 2024-06-12 11:13:00 +02:00
hwspinlock
hwtracing intel_th: pci: Add Lunar Lake support 2024-06-21 14:38:43 +02:00
i2c i2c: designware: Fix the functionality flags of the slave-only interface 2024-06-21 14:38:50 +02:00
i3c i3c: master: svc: fix invalidate IBI type and miss call client IBI handler 2024-06-16 13:47:46 +02:00
idle
iio iio: invensense: fix interrupt timestamp alignment 2024-06-21 14:38:42 +02:00
infiniband RDMA/bnxt_re: Fix the sparse warnings 2024-06-12 11:13:02 +02:00
input Input: cyapa - add missing input core locking to suspend/resume functions 2024-06-12 11:12:40 +02:00
interconnect interconnect: qcom: qcm2290: Fix mas_snoc_bimc QoS port assignment 2024-06-12 11:12:18 +02:00
iommu iommu/arm-smmu-v3: Free MSIs in case of ENOMEM 2024-06-27 13:49:03 +02:00
ipack
irqchip irqchip/gic-v3-its: Fix potential race condition in its_vlpi_prop_update() 2024-06-21 14:38:39 +02:00
isdn
leds leds: pwm: Disable PWM when going to suspend 2024-06-12 11:12:24 +02:00
macintosh macintosh/via-macii: Fix "BUG: sleeping function called from invalid context" 2024-06-12 11:11:47 +02:00
mailbox
mcb
md md/raid5: fix deadlock that raid5d() wait for itself to clear MD_SB_CHANGE_PENDING 2024-06-16 13:47:34 +02:00
media media: mtk-vcodec: potential null pointer deference in SCP 2024-06-27 13:49:03 +02:00
memory
memstick
message
mfd
misc misc: microchip: pci1xxxx: Fix a memory leak in the error handling of gp_aux_bus_probe() 2024-06-21 14:38:49 +02:00
mmc mmc: sdhci-acpi: Add quirk to enable pull-up on the card-detect GPIO on Asus T100TA 2024-06-16 13:47:37 +02:00
most
mtd mtd: rawnand: hynix: fixed typo 2024-06-12 11:11:58 +02:00
mux
net wifi: mt76: mt7921s: fix potential hung tasks during chip recovery 2024-06-27 13:49:02 +02:00
nfc NFC: trf7970a: disable all regulators on removal 2024-05-02 16:32:36 +02:00
ntb
nubus
nvdimm
nvme nvmet-passthru: propagate status from id override functions 2024-06-21 14:38:35 +02:00
nvmem nvmem: add explicit config option to read old syntax fixed OF cells 2024-05-17 12:01:55 +02:00
of of: module: add buffer overflow check in of_modalias() 2024-06-12 11:12:10 +02:00
opp
parisc
parport
pci PCI: rockchip-ep: Remove wrong mask on subsys_vendor_id 2024-06-21 14:38:41 +02:00
pcmcia
peci
perf perf/arm-dmc620: Fix lockdep assert in ->event_init() 2024-06-12 11:12:46 +02:00
phy phy: qcom: qmp-combo: fix duplicate return in qmp_v4_configure_dp_phy 2024-06-12 11:12:14 +02:00
pinctrl pinctrl: qcom: pinctrl-sm7150: Fix sdc1 and ufs special pins regs 2024-06-12 11:12:24 +02:00
platform platform/x86: p2sb: Don't init until unassigned resources have been assigned 2024-06-27 13:49:03 +02:00
pmdomain pmdomain: ti-sci: Fix duplicate PD referrals 2024-06-21 14:38:44 +02:00
pnp
power power: supply: cros_usbpd: provide ID table for avoiding fallback match 2024-06-27 13:49:03 +02:00
powercap
pps
ps3
ptp ptp: Fix error message on failed pin verification 2024-06-21 14:38:18 +02:00
pwm pwm: Rename pwm_apply_state() to pwm_apply_might_sleep() 2024-06-12 11:12:24 +02:00
rapidio
ras
regulator regulator: tps6594-regulator: Correct multi-phase configuration 2024-06-12 11:12:48 +02:00
remoteproc remoteproc: k3-r5: Jump to error handling labels in start/stop errors 2024-06-21 14:38:47 +02:00
reset
rpmsg
rtc nvmem: add explicit config option to read old syntax fixed OF cells 2024-05-17 12:01:55 +02:00
s390 s390/ap: Fix crash in AP internal function modify_bitmap() 2024-06-16 13:47:46 +02:00
sbus
scsi scsi: qedi: Fix crash while reading debugfs attribute 2024-06-27 13:49:01 +02:00
sh
siox
slimbus slimbus: qcom-ngd-ctrl: Add timeout for wait operation 2024-05-17 12:02:33 +02:00
soc soc: qcom: rpmh-rsc: Enhance check for VRM in-flight request 2024-06-16 13:47:33 +02:00
soundwire soundwire: cadence: fix invalid PDI offset 2024-06-12 11:12:15 +02:00
spi spi: stm32: Don't warn about spurious interrupts 2024-06-12 11:12:59 +02:00
spmi spmi: hisi-spmi-controller: Do not override device identifier 2024-06-21 14:38:40 +02:00
ssb ssb: Fix potential NULL pointer dereference in ssb_device_uevent() 2024-06-27 13:49:01 +02:00
staging greybus: arche-ctrl: move device table to its right location 2024-06-12 11:12:17 +02:00
target scsi: target: Fix SELinux error when systemd-modules loads the target module 2024-05-17 12:02:15 +02:00
tc
tee
thermal thermal/drivers/qcom/lmh: Check for SCM availability at probe 2024-06-16 13:47:33 +02:00
thunderbolt thunderbolt: debugfs: Fix margin debugfs node creation condition 2024-06-21 14:38:25 +02:00
tty serial: 8250_dw: Don't use struct dw8250_data outside of 8250_dw 2024-06-21 14:38:49 +02:00
ufs scsi: ufs: core: Quiesce request queues before checking pending cmds 2024-06-21 14:38:34 +02:00
uio uio_hv_generic: Don't free decrypted memory 2024-05-17 12:02:17 +02:00
usb usb: misc: uss720: check for incompatible versions of the Belkin F5U002 2024-06-27 13:49:04 +02:00
vdpa
vfio vfio/pci: fix potential memory leak in vfio_intx_enable() 2024-06-12 11:12:22 +02:00
vhost
video fbdev: savage: Handle err return when savagefb_check_var failed 2024-06-16 13:47:37 +02:00
virt drivers/virt/acrn: fix PFNMAP PTE checks in acrn_vm_ram_map() 2024-06-12 11:12:09 +02:00
virtio virtio: delete vq in vp_find_vqs_msix() when request_irq() fails 2024-06-12 11:12:49 +02:00
vlynq
w1 nvmem: add explicit config option to read old syntax fixed OF cells 2024-05-17 12:01:55 +02:00
watchdog watchdog: rti_wdt: Set min_hw_heartbeat_ms to accommodate a safety margin 2024-06-16 13:47:43 +02:00
xen drivers/xen: Improve the late XenStore init protocol 2024-06-12 11:12:51 +02:00
zorro
Kconfig
Makefile