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: Xiao Guangrong
Subject: Re: [Qemu-devel] [PATCH] nvdimm acpi: fix g_array_free() with NULL pointer
Date: Fri, 13 Jan 2017 08:50:11 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0


CCed Haozhong

On 01/12/2017 07:09 PM, Stefan Hajnoczi wrote:
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?

Yes. Haozhong will help me to audit the code and fix this crash.

Thanks for your report, Stefan!




reply via email to

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