From: Philippe Mathieu-Daudé Date: Mon, 18 May 2020 15:53:04 +0000 (+0200) Subject: disas: Let disas::read_memory() handler return EIO on error X-Git-Tag: v5.1.0-rc0~78^2~58 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6766ba506eb62110b8299d25718565a03220d012;p=thirdparty%2Fqemu.git disas: Let disas::read_memory() handler return EIO on error Both cpu_memory_rw_debug() and address_space_read() return an error on failed transaction. Check the returned value, and return EIO in case of error. Signed-off-by: Philippe Mathieu-Daudé Signed-off-by: Paolo Bonzini --- diff --git a/disas.c b/disas.c index 45285d3f63f..c1397d39336 100644 --- a/disas.c +++ b/disas.c @@ -39,9 +39,11 @@ target_read_memory (bfd_vma memaddr, struct disassemble_info *info) { CPUDebug *s = container_of(info, CPUDebug, info); + int r; - cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0); - return 0; + r = cpu_memory_rw_debug(s->cpu, memaddr, myaddr, length, 0); + + return r ? EIO : 0; } /* Print an error message. We can assume that this is in response to @@ -718,10 +720,11 @@ physical_read_memory(bfd_vma memaddr, bfd_byte *myaddr, int length, struct disassemble_info *info) { CPUDebug *s = container_of(info, CPUDebug, info); + MemTxResult res; - address_space_read(s->cpu->as, memaddr, MEMTXATTRS_UNSPECIFIED, - myaddr, length); - return 0; + res = address_space_read(s->cpu->as, memaddr, MEMTXATTRS_UNSPECIFIED, + myaddr, length); + return res == MEMTX_OK ? 0 : EIO; } /* Disassembler for the monitor. */