qemu/hw/arm
Simon Veith 05ff2fb80c hw/arm/smmuv3: Check stream IDs against actual table LOG2SIZE
When checking whether a stream ID is in range of the stream table, we
have so far been only checking it against our implementation limit
(SMMU_IDR1_SIDSIZE). However, the guest can program the
STRTAB_BASE_CFG.LOG2SIZE field to a size that is smaller than this
limit.

Check the stream ID against this limit as well to match the hardware
behavior of raising C_BAD_STREAMID events in case the limit is exceeded.
Also, ensure that we do not go one entry beyond the end of the table by
checking that its index is strictly smaller than the table size.

ref. ARM IHI 0070C, section 6.3.24.

Signed-off-by: Simon Veith <sveith@amazon.de>
Acked-by: Eric Auger <eric.auger@redhat.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Message-id: 1576509312-13083-4-git-send-email-sveith@amazon.de
Cc: Eric Auger <eric.auger@redhat.com>
Cc: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2019-12-20 14:03:00 +00:00
..
allwinner-a10.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
armsse.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
armv7m.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
aspeed.c aspeed: Add support for the tacoma-bmc board 2019-12-16 10:46:34 +00:00
aspeed_ast2600.c ast2600: Configure CNTFRQ at 1125MHz 2019-12-20 14:03:00 +00:00
aspeed_soc.c aspeed: Change the "scu" property definition 2019-12-16 10:46:34 +00:00
bcm2835_peripherals.c hw/arm/bcm2835_peripherals: Use the SYS_timer 2019-10-25 13:09:27 +01:00
bcm2836.c hw/arm/bcm2836: Rename cpus[] as cpu[].core 2019-10-25 13:09:27 +01:00
boot.c hw/arm/boot: Set NSACR.{CP11, CP10} in dummy SMC setup routine 2019-11-11 13:44:16 +00:00
collie.c hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
cubieboard.c Machine + x86 queue, 2019-09-03 2019-09-04 14:44:54 +01:00
digic.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
digic_boards.c hw/arm/digic4: Inline digic4_board_setup_ram() function 2019-10-22 17:44:01 +01:00
exynos4_boards.c Machine + x86 queue, 2019-09-03 2019-09-04 14:44:54 +01:00
exynos4210.c hw/arm/exynos4210: Use the Samsung s3c SDHCI controller 2019-10-22 17:44:00 +01:00
fsl-imx6.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
fsl-imx6ul.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
fsl-imx7.c hw/arm: Replace global smp variables with machine smp properties 2019-07-05 17:08:03 -03:00
fsl-imx25.c hw/arm/fsl-imx: Add the cpu as child of the SoC object 2019-09-03 16:20:34 +01:00
fsl-imx31.c hw/arm/fsl-imx: Add the cpu as child of the SoC object 2019-09-03 16:20:34 +01:00
gumstix.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
highbank.c hw/arm/highbank: Use AddressSpace when using write_secondary_boot() 2019-10-25 13:09:27 +01:00
imx25_pdk.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
integratorcp.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
Kconfig hw/arm/virt: Enable device memory cold/hot plug with ACPI boot 2019-10-05 17:12:08 -04:00
kzm.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
mainstone.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
Makefile.objs aspeed/soc: Add AST2600 support 2019-10-15 18:09:05 +01:00
mcimx6ul-evk.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
mcimx7d-sabre.c Machine + x86 queue, 2019-09-03 2019-09-04 14:44:54 +01:00
microbit.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
mps2-tz.c hw/arm/mps2: Use the IEC binary prefix definitions 2019-10-22 17:44:00 +01:00
mps2.c hw/arm/mps2: Use the IEC binary prefix definitions 2019-10-22 17:44:00 +01:00
msf2-soc.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
msf2-som.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
musca.c hw: Move PL031 device from hw/timer/ to hw/rtc/ subdirectory 2019-10-24 20:10:27 +02:00
musicpal.c hw/arm/musicpal.c: Switch to transaction-based ptimer API 2019-10-15 18:09:02 +01:00
netduino2.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
nrf51_soc.c Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
nseries.c hw/arm/nseries: Replace the bluetooth chardev with a "null" chardev 2019-12-16 17:24:07 +01:00
omap1.c hw/arm/omap1: Create the RAM in the board 2019-10-22 17:44:01 +01:00
omap2.c hw/arm/omap2: Create the RAM in the board 2019-10-22 17:44:01 +01:00
omap_sx1.c hw/arm/omap1: Create the RAM in the board 2019-10-22 17:44:01 +01:00
palm.c hw/arm/omap1: Create the RAM in the board 2019-10-22 17:44:01 +01:00
pxa2xx.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
pxa2xx_gpio.c Include hw/qdev-properties.h less 2019-08-16 13:31:53 +02:00
pxa2xx_pic.c Include hw/hw.h exactly where needed 2019-08-16 13:31:52 +02:00
raspi.c hw/arm/raspi: Use AddressSpace when using arm_boot::write_secondary_boot 2019-10-25 13:09:27 +01:00
realview.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
sabrelite.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
sbsa-ref.c hw/arm/sbsa-ref: Simplify by moving the gic in the machine state 2019-12-16 10:46:35 +00:00
smmu-common.c hw/core: Move cpu.c, cpu.h from qom/ to hw/core/ 2019-08-21 13:24:01 +02:00
smmu-internal.h hw/arm/smmu-common: VMSAv8-64 page table walk 2018-05-04 18:05:51 +01:00
smmuv3-internal.h hw/arm/smmuv3: Correct SMMU_BASE_ADDR_MASK value 2019-12-20 14:03:00 +00:00
smmuv3.c hw/arm/smmuv3: Check stream IDs against actual table LOG2SIZE 2019-12-20 14:03:00 +00:00
spitz.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
stellaris.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
stm32f205_soc.c Include sysemu/sysemu.h a lot less 2019-08-16 13:31:53 +02:00
strongarm.c hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
strongarm.h hw/arm/collie: Create the RAM in the board 2019-10-22 17:44:01 +01:00
sysbus-fdt.c Clean up inclusion of sysemu/sysemu.h 2019-08-16 13:31:53 +02:00
tosa.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
trace-events trace-events: Fix attribution of trace points to source 2019-03-22 16:18:07 +00:00
versatilepb.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
vexpress.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
virt-acpi-build.c hw/arm/acpi: enable SHPC native hot plug 2019-12-16 10:46:35 +00:00
virt.c target-arm queue: 2019-12-16 13:04:34 +00:00
xilinx_zynq.c hw/arm/xilinx_zynq: Use the IEC binary prefix definitions 2019-10-22 17:44:00 +01:00
xlnx-versal-virt.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
xlnx-versal.c hw/arm: versal: Add the CRP as unimplemented 2019-11-26 13:55:36 +00:00
xlnx-zcu102.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00
xlnx-zynqmp.c hw/arm: Use ARM_CPU_TYPE_NAME() macro when appropriate 2019-09-03 16:20:34 +01:00
z2.c hw/arm: simplify arm_load_dtb 2019-09-03 11:26:55 -03:00