memsave: Improve and disambiguate error message
When requesting a size which cannot be read, the error message shows a different address which is misleading to the user and it looks like something's wrong with the address parsing. This is because the input @addr variable is incremented in the memory dumping loop: (qemu) memsave 0xffffffff8418069c 0xb00000 mem Invalid addr 0xffffffff849ffe9c specified Fix that by saving the original address and size and use them in the error message: (qemu) memsave 0xffffffff8418069c 0xb00000 mem Invalid addr 0xffffffff8418069c/size 11534336 specified Signed-off-by: Borislav Petkov <bp@suse.de> Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
This commit is contained in:
parent
31da45ce04
commit
0dc9daf0be
4
cpus.c
4
cpus.c
@ -1474,6 +1474,7 @@ void qmp_memsave(int64_t addr, int64_t size, const char *filename,
|
||||
uint32_t l;
|
||||
CPUState *cpu;
|
||||
uint8_t buf[1024];
|
||||
int64_t orig_addr = addr, orig_size = size;
|
||||
|
||||
if (!has_cpu) {
|
||||
cpu_index = 0;
|
||||
@ -1497,7 +1498,8 @@ void qmp_memsave(int64_t addr, int64_t size, const char *filename,
|
||||
if (l > size)
|
||||
l = size;
|
||||
if (cpu_memory_rw_debug(cpu, addr, buf, l, 0) != 0) {
|
||||
error_setg(errp, "Invalid addr 0x%016" PRIx64 "specified", addr);
|
||||
error_setg(errp, "Invalid addr 0x%016" PRIx64 "/size %" PRId64
|
||||
" specified", orig_addr, orig_size);
|
||||
goto exit;
|
||||
}
|
||||
if (fwrite(buf, 1, l, f) != l) {
|
||||
|
Loading…
Reference in New Issue
Block a user