qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] nvdimm acpi: fix g_array_free() with NULL point


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] [PATCH] nvdimm acpi: fix g_array_free() with NULL pointer
Date: Thu, 12 Jan 2017 11:09:28 +0000
User-agent: Mutt/1.7.1 (2016-10-04)

On Thu, Jan 12, 2017 at 11:18:25AM +0800, Xiao Guangrong wrote:
> 
> 
> On 01/11/2017 05:36 PM, Stefan Hajnoczi wrote:
> > Unlike g_free(), g_array_free() does not accept a NULL pointer argument.
> > The following error is logged when an nvdimm device is realized:
> > 
> >   GLib-CRITICAL **: g_array_free: assertion 'array' failed
> > 
> > Cc: Xiao Guangrong <address@hidden>
> > Signed-off-by: Stefan Hajnoczi <address@hidden>
> > ---
> >  hw/acpi/nvdimm.c | 4 +++-
> >  1 file changed, 3 insertions(+), 1 deletion(-)

NACK

> > 
> > diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
> > index 8e7d6ec..8f0a484 100644
> > --- a/hw/acpi/nvdimm.c
> > +++ b/hw/acpi/nvdimm.c
> > @@ -375,7 +375,9 @@ static void nvdimm_init_fit_buffer(NvdimmFitBuffer 
> > *fit_buf)
> > 
> >  static void nvdimm_build_fit_buffer(NvdimmFitBuffer *fit_buf)
> >  {
> > -    g_array_free(fit_buf->fit, true);
> > +    if (fit_buf->fit) {
> > +        g_array_free(fit_buf->fit, true);
> > +    }
> 
> Er, i do not know why it is NULL as we have init-ed it in 
> nvdimm_init_fit_buffer:
> 
> static void nvdimm_init_fit_buffer(NvdimmFitBuffer *fit_buf)
> {
>     fit_buf->fit = g_array_new(false, true /* clear */, 1);
> }
> 
> And i can not reproduce it on my box, could you share your command line and 
> the
> based commit id?

Good point, it happens when nvdimm_plug() is called but -M pc,nvdimm is
missing from the command-line.  This means nvdimm_init_acpi_state() was
not called by pc_init1():

  $ x86_64-softmmu/qemu-system-x86_64 \
      -enable-kvm \
      -m 1G,slots=2,maxmem=16G \
      -drive if=virtio,file=test.img,format=raw \
      -object memory-backend-file,id=hostmem0,mem-path=mydimm,share=on,size=8G \
      -device nvdimm,id=nvdimm0,memdev=hostmem0

Do you want to audit the code to check if anything else misbehaves when
-device nvdimm is used without -M pc,nvdimm?

Stefan

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]