exec.c: Use correct attrs in cpu_memory_rw_debug()

In the softmmu version of cpu_memory_rw_debug(), we ask the
CPU for the attributes to use for the virtual memory access,
and we correctly use those to identify the address space
index. However, we were not passing them in to the
address_space_write_rom() and address_space_rw() functions.

The effect of this was that a memory access from the gdbstub
to a device which had behaviour that was sensitive to the
memory attributes (such as some ARMv8M NVIC registers) was
incorrectly always performed as if non-secure, rather than
using the right security state for the CPU's current state.

Fixes: https://bugs.launchpad.net/qemu/+bug/1812091

Backports commit ea7a5330b79523540ba776c529b09dc8cf3fa0c5 from qemu
This commit is contained in:
Lioncash 2019-01-29 17:05:38 -05:00
parent 64f10fa075
commit 3fa54df972
No known key found for this signature in database
GPG key ID: 4E3C3CC1031BA9C7

View file

@ -2434,8 +2434,7 @@ int cpu_memory_rw_debug(CPUState *cpu, target_ulong addr,
phys_addr, buf, l);
} else {
address_space_rw(cpu->cpu_ases[asidx].as, phys_addr,
MEMTXATTRS_UNSPECIFIED,
buf, l, 0);
attrs, buf, l, 0);
}
len -= l;
buf += l;