[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
signature.asc
Description: PGP signature