qemu/hw
Max Erenberg 2c5107e1b4 edu: fix DMA range upper bound check
The edu_check_range function checks that start <= end1 < end2, where
end1 is the upper bound (exclusive) of the guest-supplied DMA range and
end2 is the upper bound (exclusive) of the device's allowed DMA range.
When the guest tries to transfer exactly DMA_SIZE (4096) bytes, end1
will be equal to end2, so the check fails and QEMU aborts with this
puzzling error message (newlines added for formatting):

  qemu: hardware error: EDU: DMA range
    0x0000000000040000-0x0000000000040fff out of bounds
   (0x0000000000040000-0x0000000000040fff)!

By checking end1 <= end2 instead, guests will be allowed to transfer
exactly 4096 bytes. It is not necessary to explicitly check for
start <= end1 because the previous two checks (within(addr, start, end2)
and end1 > addr) imply start < end1.

Fixes: b30934cb52 ("hw: misc, add educational driver", 2015-01-21)
Signed-off-by: Max Erenberg <merenber@uwaterloo.ca>
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
2024-01-05 22:28:54 +03:00
..
9pfs * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
acpi * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
adc hw/adc: Constify VMState 2023-12-29 11:17:30 +11:00
alpha hw/pci: modify pci_setup_iommu() to set PCIIOMMUOps 2023-11-03 09:20:31 +01:00
arm hw/arm: Simplify memory_region_init_rom() calls 2024-01-05 16:20:15 +01:00
audio hw/audio/sb16: Do not migrate qdev properties 2024-01-05 16:20:15 +01:00
avr hw/avr/atmega: Fix wrong initial value of stack pointer 2023-11-28 14:27:12 +01:00
block hw/block: Constify VMState 2023-12-29 11:17:30 +11:00
char hw/char: Constify VMState 2023-12-29 11:17:30 +11:00
core machine: Print CPU model name instead of CPU type 2024-01-05 16:20:15 +01:00
cpu hw/cpu/cluster: Cleanup unused included header in cluster.c 2024-01-05 16:20:15 +01:00
cris
cxl meson: remove CONFIG_ALL 2023-12-31 09:11:28 +01:00
display * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
dma hw/dma: Constify VMState 2023-12-29 11:17:30 +11:00
gpio hw/gpio: Constify VMState 2023-12-29 11:17:30 +11:00
hppa hw/core/machine: Constify MachineClass::valid_cpu_types[] 2023-11-20 15:30:59 +00:00
hyperv hw/hyperv: Constify VMState 2023-12-29 11:17:30 +11:00
i2c hw/i2c: Constify VMState 2023-12-29 11:17:30 +11:00
i386 * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
ide hw/ide: Constify VMState 2023-12-29 11:17:30 +11:00
input hw/input: Constify VMState 2023-12-29 11:17:30 +11:00
intc hw/intc: Constify VMState 2023-12-29 11:17:30 +11:00
ipack hw/ipack: Constify VMState 2023-12-29 11:17:30 +11:00
ipmi hw/ipmi: Constify VMState 2023-12-29 11:17:30 +11:00
isa hw/isa: Constify VMState 2023-12-29 11:17:30 +11:00
loongarch hw/loongarch: Constify VMState 2023-12-29 11:17:30 +11:00
m68k hw/m68k/mcf5206: Embed m5206_timer_state in m5206_mbar_state 2024-01-05 16:20:15 +01:00
mem meson: remove CONFIG_ALL 2023-12-31 09:11:28 +01:00
microblaze hw/microblaze: Clean up local variable shadowing 2023-09-29 10:07:16 +02:00
mips hw/mips: Inline 'bios.h' definitions 2024-01-05 16:20:15 +01:00
misc edu: fix DMA range upper bound check 2024-01-05 22:28:54 +03:00
net hw/net: cadence_gem: Fix MDIO_OP_xxx values 2024-01-05 22:28:54 +03:00
nios2 target/nios2: Deprecate the Nios II architecture 2023-11-23 14:10:04 +00:00
nubus trace-events: Fix the name of the tracing.rst file 2023-09-08 13:08:51 +03:00
nvme hw/nvme: Clean up local variable shadowing in nvme_ns_init() 2023-09-29 10:07:20 +02:00
nvram hw/nvram: Simplify memory_region_init_rom_device() calls 2024-01-05 16:20:15 +01:00
openrisc hw/openrisc: Constify VMState 2023-12-30 07:38:06 +11:00
pci * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
pci-bridge * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
pci-host hw/pci-host/raven: Propagate error in raven_realize() 2024-01-05 16:20:15 +01:00
pcmcia hw/pcmcia/pxa2xx: Inline pxa2xx_pcmcia_init() 2023-10-27 12:48:57 +01:00
ppc hw: Simplify memory_region_init_ram() calls 2024-01-05 16:20:15 +01:00
rdma hw/rdma/vmw/pvrdma_cmd: Use correct struct in query_port() 2023-10-21 15:00:22 +03:00
remote meson: remove CONFIG_ALL 2023-12-31 09:11:28 +01:00
riscv hw/riscv/shakti_c: Check CPU type in machine_run_board_init() 2024-01-05 16:20:15 +01:00
rtc hw/rtc: Constify VMState 2023-12-30 07:38:06 +11:00
rx hw/rx/rx62n: Use qdev_prop_set_array() 2023-11-10 18:19:13 +01:00
s390x hw/s390x: Constify VMState 2023-12-30 07:38:06 +11:00
scsi * configure: use a native non-cross compiler for linux-user 2024-01-04 19:55:20 +00:00
sd hw/sd: Constify VMState 2023-12-30 07:38:06 +11:00
sensor hw/sensor: Constify VMState 2023-12-30 07:38:06 +11:00
sh4 hw/other: spelling fixes 2023-09-21 11:31:16 +03:00
smbios meson: remove CONFIG_ALL 2023-12-31 09:11:28 +01:00
sparc target/sparc: Simplify qemu_irq_ack 2024-01-05 16:20:15 +01:00
sparc64 hw/sparc: Simplify memory_region_init_ram_nomigrate() calls 2024-01-05 16:20:15 +01:00
ssi hw/ssi: Constify VMState 2023-12-30 07:38:06 +11:00
timer hw/timer: Constify VMState 2023-12-30 07:38:06 +11:00
tpm hw/tpm: Constify VMState 2023-12-30 07:38:06 +11:00
tricore hw/tricore: Log failing test in testdevice 2023-09-29 08:28:02 +02:00
ufs hw/ufs: avoid generating the same ID string for different LU devices 2023-12-05 13:57:18 +09:00
usb migration 1st pull for 9.0 2024-01-05 13:35:25 +00:00
vfio hw/vfio: Constify VMState 2023-12-30 07:38:06 +11:00
virtio misc: Simplify qemu_prealloc_mem() calls 2024-01-05 16:20:15 +01:00
watchdog hw/watchdog: Constify VMState 2023-12-30 07:38:06 +11:00
xen cpus: check running not RUN_STATE_RUNNING 2024-01-04 09:52:42 +08:00
xenpv hw/xen: update Xen PV NIC to XenDevice model 2023-11-07 08:54:20 +00:00
xtensa trivial: Simplify the spots that use TARGET_BIG_ENDIAN as a numeric value 2023-09-08 13:08:52 +03:00
Kconfig
meson.build