[v4,3/4] dump: do not dump non-existent guest memory

Message ID 20170913142036.2469-4-lvivier@redhat.com
State New
Headers show
Series
  • hmp: fix "dump-quest-memory" segfault
Related show

Commit Message

Laurent Vivier Sept. 13, 2017, 2:20 p.m.
From: Cornelia Huck <cohuck@redhat.com>

It does not really make sense to dump memory that is not there.

Moreover, that fixes a segmentation fault when calling dump-guest-memory
with no filter for a machine with no memory defined.

New behaviour is:

(qemu) dump-guest-memory /dev/null
dump: no guest memory to dump
(qemu) dump-guest-memory /dev/null 0 4096
dump: no guest memory to dump

Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Tested-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Peter Xu <peterx@redhat.com>
---
 dump.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Cornelia Huck Sept. 13, 2017, 2:27 p.m. | #1
On Wed, 13 Sep 2017 16:20:35 +0200
Laurent Vivier <lvivier@redhat.com> wrote:

> From: Cornelia Huck <cohuck@redhat.com>
> 
> It does not really make sense to dump memory that is not there.
> 
> Moreover, that fixes a segmentation fault when calling dump-guest-memory
> with no filter for a machine with no memory defined.
> 
> New behaviour is:
> 
> (qemu) dump-guest-memory /dev/null
> dump: no guest memory to dump
> (qemu) dump-guest-memory /dev/null 0 4096
> dump: no guest memory to dump
> 
> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> Tested-by: Laurent Vivier <lvivier@redhat.com>
> Reviewed-by: Laurent Vivier <lvivier@redhat.com>
> Reviewed-by: Greg Kurz <groug@kaod.org>
> Reviewed-by: Peter Xu <peterx@redhat.com>
> ---
>  dump.c | 6 ++++++
>  1 file changed, 6 insertions(+)

You need to supply your s-o-b as well, no?
Laurent Vivier Sept. 13, 2017, 2:30 p.m. | #2
On 13/09/2017 16:27, Cornelia Huck wrote:
> On Wed, 13 Sep 2017 16:20:35 +0200
> Laurent Vivier <lvivier@redhat.com> wrote:
> 
>> From: Cornelia Huck <cohuck@redhat.com>
>>
>> It does not really make sense to dump memory that is not there.
>>
>> Moreover, that fixes a segmentation fault when calling dump-guest-memory
>> with no filter for a machine with no memory defined.
>>
>> New behaviour is:
>>
>> (qemu) dump-guest-memory /dev/null
>> dump: no guest memory to dump
>> (qemu) dump-guest-memory /dev/null 0 4096
>> dump: no guest memory to dump
>>
>> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
>> Tested-by: Laurent Vivier <lvivier@redhat.com>
>> Reviewed-by: Laurent Vivier <lvivier@redhat.com>
>> Reviewed-by: Greg Kurz <groug@kaod.org>
>> Reviewed-by: Peter Xu <peterx@redhat.com>
>> ---
>>  dump.c | 6 ++++++
>>  1 file changed, 6 insertions(+)
> 
> You need to supply your s-o-b as well, no?
> 

I was wondering... theoretically, yes, so:

Signed-off-by: Laurent Vivier <lvivier@redhat.com>

Thanks,
Laurent
Dr. David Alan Gilbert Sept. 14, 2017, 9:48 a.m. | #3
* Laurent Vivier (lvivier@redhat.com) wrote:
> On 13/09/2017 16:27, Cornelia Huck wrote:
> > On Wed, 13 Sep 2017 16:20:35 +0200
> > Laurent Vivier <lvivier@redhat.com> wrote:
> > 
> >> From: Cornelia Huck <cohuck@redhat.com>
> >>
> >> It does not really make sense to dump memory that is not there.
> >>
> >> Moreover, that fixes a segmentation fault when calling dump-guest-memory
> >> with no filter for a machine with no memory defined.
> >>
> >> New behaviour is:
> >>
> >> (qemu) dump-guest-memory /dev/null
> >> dump: no guest memory to dump
> >> (qemu) dump-guest-memory /dev/null 0 4096
> >> dump: no guest memory to dump
> >>
> >> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
> >> Tested-by: Laurent Vivier <lvivier@redhat.com>
> >> Reviewed-by: Laurent Vivier <lvivier@redhat.com>
> >> Reviewed-by: Greg Kurz <groug@kaod.org>
> >> Reviewed-by: Peter Xu <peterx@redhat.com>
> >> ---
> >>  dump.c | 6 ++++++
> >>  1 file changed, 6 insertions(+)
> > 
> > You need to supply your s-o-b as well, no?
> > 
> 
> I was wondering... theoretically, yes, so:
> 
> Signed-off-by: Laurent Vivier <lvivier@redhat.com>

Thanks.

Dave

> Thanks,
> Laurent
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

Patch

diff --git a/dump.c b/dump.c
index a79773d0f7..d2093e141b 100644
--- a/dump.c
+++ b/dump.c
@@ -1536,6 +1536,12 @@  static void dump_init(DumpState *s, int fd, bool has_format,
     fprintf(stderr, "DUMP: total memory to dump: %lu\n", s->total_size);
 #endif
 
+    /* it does not make sense to dump non-existent memory */
+    if (!s->total_size) {
+        error_setg(errp, "dump: no guest memory to dump");
+        goto cleanup;
+    }
+
     s->start = get_start_block(s);
     if (s->start == -1) {
         error_setg(errp, QERR_INVALID_PARAMETER, "begin");