qemu/hw/dma
Alexandra Diupina 4b00855f0e hw/dmax/xlnx_dpdma: fix handling of address_extension descriptor fields
The DMA descriptor structures for this device have
a set of "address extension" fields which extend the 32
bit source addresses with an extra 16 bits to give a
48 bit address:
 https://docs.amd.com/r/en-US/ug1085-zynq-ultrascale-trm/ADDR_EXT-Field

However, we misimplemented this address extension in several ways:
 * we only extracted 12 bits of the extension fields, not 16
 * we didn't shift the extension field up far enough
 * we accidentally did the shift as 32-bit arithmetic, which
   meant that we would have an overflow instead of setting
   bits [47:32] of the resulting 64-bit address

Add a type cast and use extract64() instead of extract32()
to avoid integer overflow on addition. Fix bit fields
extraction according to documentation.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Cc: qemu-stable@nongnu.org
Fixes: d3c6369a96 ("introduce xlnx-dpdma")
Signed-off-by: Alexandra Diupina <adiupina@astralinux.ru>
Message-id: 20240428181131.23801-1-adiupina@astralinux.ru
[PMM: adjusted commit message]
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2024-04-30 15:39:54 +01:00
..
bcm2835_dma.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
etraxfs_dma.c
i8257.c hw/dma: Pass parent object to i8257_dma_init() 2024-02-15 16:58:46 +01:00
i82374.c hw/dma: Pass parent object to i8257_dma_init() 2024-02-15 16:58:46 +01:00
Kconfig
meson.build
omap_dma.c hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
pl080.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
pl330.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
pxa2xx_dma.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
rc4030.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
sifive_pdma.c
soc_dma.c hw/dma: avoid apparent overflow in soc_dma_set_request 2024-04-25 10:21:06 +01:00
sparc32_dma.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
trace-events
trace.h
xilinx_axidma.c hw/dma: Declare link using static DEFINE_PROP_LINK() macro 2023-10-19 23:13:28 +02:00
xlnx_csu_dma.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
xlnx_dpdma.c hw/dmax/xlnx_dpdma: fix handling of address_extension descriptor fields 2024-04-30 15:39:54 +01:00
xlnx-zdma.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
xlnx-zynq-devcfg.c hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00