Message ID | 20170913142036.2469-2-lvivier@redhat.com |
---|---|
State | New |
Headers | show |
Series | hmp: fix "dump-quest-memory" segfault | expand |
On Wed, Sep 13, 2017 at 04:20:33PM +0200, Laurent Vivier wrote: > Running QEMU with > qemu-system-ppc64 -M none -nographic -m 256 > and executing > dump-guest-memory /dev/null 0 8192 > results in segfault > > Fix by checking if we have CPU, and exit with > error if there is no CPU: > > (qemu) dump-guest-memory /dev/null > this feature or command is not currently supported > > Signed-off-by: Laurent Vivier <lvivier@redhat.com> > Reviewed-by: Greg Kurz <groug@kaod.org> > Reviewed-by: Thomas Huth <thuth@redhat.com> Acked-by: David Gibson <david@gibson.dropbear.id.au> > --- > target/ppc/arch_dump.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/target/ppc/arch_dump.c b/target/ppc/arch_dump.c > index 8e9397aa58..95b9ab6f29 100644 > --- a/target/ppc/arch_dump.c > +++ b/target/ppc/arch_dump.c > @@ -224,8 +224,15 @@ typedef struct NoteFuncDescStruct NoteFuncDesc; > int cpu_get_dump_info(ArchDumpInfo *info, > const struct GuestPhysBlockList *guest_phys_blocks) > { > - PowerPCCPU *cpu = POWERPC_CPU(first_cpu); > - PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu); > + PowerPCCPU *cpu; > + PowerPCCPUClass *pcc; > + > + if (first_cpu == NULL) { > + return -1; > + } > + > + cpu = POWERPC_CPU(first_cpu); > + pcc = POWERPC_CPU_GET_CLASS(cpu); > > info->d_machine = PPC_ELF_MACHINE; > info->d_class = ELFCLASS;
diff --git a/target/ppc/arch_dump.c b/target/ppc/arch_dump.c index 8e9397aa58..95b9ab6f29 100644 --- a/target/ppc/arch_dump.c +++ b/target/ppc/arch_dump.c @@ -224,8 +224,15 @@ typedef struct NoteFuncDescStruct NoteFuncDesc; int cpu_get_dump_info(ArchDumpInfo *info, const struct GuestPhysBlockList *guest_phys_blocks) { - PowerPCCPU *cpu = POWERPC_CPU(first_cpu); - PowerPCCPUClass *pcc = POWERPC_CPU_GET_CLASS(cpu); + PowerPCCPU *cpu; + PowerPCCPUClass *pcc; + + if (first_cpu == NULL) { + return -1; + } + + cpu = POWERPC_CPU(first_cpu); + pcc = POWERPC_CPU_GET_CLASS(cpu); info->d_machine = PPC_ELF_MACHINE; info->d_class = ELFCLASS;