| From 86e4f93d827d3c1efd00cd8a906e38a2c0f2b5bc Mon Sep 17 00:00:00 2001 |
| From: Richard Henderson <richard.henderson@linaro.org> |
| Date: Fri, 25 Aug 2023 14:06:58 -0700 |
| Subject: [PATCH] softmmu: Assert data in bounds in iotlb_to_section |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| 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> |
| |
| Upstream-Status: Backport [https://gitlab.com/qemu-project/qemu/-/commit/86e4f93d827d3c1efd00cd8a906e38a2c0f2b5bc] |
| --- |
| softmmu/physmem.c | 10 ++++++++-- |
| 1 file 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) |
| -- |
| 2.34.1 |
| |