diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2023-08-25 14:06:58 -0700 |
---|---|---|
committer | Michael Tokarev <mjt@tls.msk.ru> | 2023-08-30 19:38:00 +0300 |
commit | 5691fbf44095a31256cc6e323d37b8cd5fd9c196 (patch) | |
tree | d292840dee4999bb8fc4948ac3fc48a1f586ddbc /softmmu | |
parent | 441106eebb6d4890e3ae5c4eb3494d004ac5a93d (diff) |
softmmu: Assert data in bounds in iotlb_to_section
Acked-by: Alex Bennée <alex.bennee@linaro.org>
Suggested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
(cherry picked from commit 86e4f93d827d3c1efd00cd8a906e38a2c0f2b5bc)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
Diffstat (limited to 'softmmu')
-rw-r--r-- | softmmu/physmem.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/softmmu/physmem.c b/softmmu/physmem.c index 3df73542e1..7597dc1c39 100644 --- a/softmmu/physmem.c +++ b/softmmu/physmem.c @@ -2413,9 +2413,15 @@ MemoryRegionSection *iotlb_to_section(CPUState *cpu, int asidx = cpu_asidx_from_attrs(cpu, attrs); CPUAddressSpace *cpuas = &cpu->cpu_ases[asidx]; AddressSpaceDispatch *d = qatomic_rcu_read(&cpuas->memory_dispatch); - MemoryRegionSection *sections = d->map.sections; + int section_index = index & ~TARGET_PAGE_MASK; + MemoryRegionSection *ret; + + assert(section_index < d->map.sections_nb); + ret = d->map.sections + section_index; + assert(ret->mr); + assert(ret->mr->ops); - return §ions[index & ~TARGET_PAGE_MASK]; + return ret; } static void io_mem_init(void) |