All of lore.kernel.org
 help / color / mirror / Atom feed
From: "KONRAD Frédéric" <fred.konrad@greensocs.com>
To: Dunrong Huang <huangdr@cloud-times.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] virtio-blk: Do not segfault fault if failed to initialize dataplane
Date: Tue, 19 Mar 2013 09:37:55 +0100	[thread overview]
Message-ID: <514823E3.3000102@greensocs.com> (raw)
In-Reply-To: <1363681649-23162-1-git-send-email-huangdr@cloud-times.com>

On 19/03/2013 09:27, Dunrong Huang wrote:
> $ ~/usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 -drive if=none,id=drive0,cache=none,aio=native,format=raw,file=/root/Image/centos-6.4.raw -device virtio-blk-pci,drive=drive0,scsi=off,x-data-plane=on,config-wce=on # make dataplane fail to initialize
> qemu-system-x86_64: -device virtio-blk-pci,drive=drive0,scsi=off,x-data-plane=on,config-wce=on: device is incompatible with x-data-plane, use config-wce=off
> *** glibc detected *** /root/usr/bin/qemu-system-x86_64: free(): invalid pointer: 0x00007f001fef12f8 ***
> ======= Backtrace: =========
> /lib64/libc.so.6(+0x7d776)[0x7f00153a5776]
> /root/usr/bin/qemu-system-x86_64(+0x2c34ec)[0x7f001cf5b4ec]
> /root/usr/bin/qemu-system-x86_64(+0x342f9a)[0x7f001cfdaf9a]
> /root/usr/bin/qemu-system-x86_64(+0x33694e)[0x7f001cfce94e]
> ....................
>
>   (gdb) bt
>   #0  0x00007f3bf3a12015 in raise () from /lib64/libc.so.6
>   #1  0x00007f3bf3a1348b in abort () from /lib64/libc.so.6
>   #2  0x00007f3bf3a51a4e in __libc_message () from /lib64/libc.so.6
>   #3  0x00007f3bf3a57776 in malloc_printerr () from /lib64/libc.so.6
>   #4  0x00007f3bfb60d4ec in free_and_trace (mem=0x7f3bfe0129f8) at vl.c:2786
>   #5  0x00007f3bfb68cf9a in virtio_cleanup (vdev=0x7f3bfe0129f8) at /root/Develop/QEMU/qemu/hw/virtio.c:900
>   #6  0x00007f3bfb68094e in virtio_blk_device_init (vdev=0x7f3bfe0129f8) at /root/Develop/QEMU/qemu/hw/virtio-blk.c:666
>   #7  0x00007f3bfb68dadf in virtio_device_init (qdev=0x7f3bfe0129f8) at /root/Develop/QEMU/qemu/hw/virtio.c:1092
>   #8  0x00007f3bfb50da46 in device_realize (dev=0x7f3bfe0129f8, err=0x7fff479c9258) at hw/qdev.c:176
> .............................
>
> In virtio_blk_device_init(), the memory which vdev point to is a static
> member of "struct VirtIOBlkPCI", not heap memory, and it does not
> get freed. So we shoule use virtio_common_cleanup() to clean this VirtIODevice
> rather than virtio_cleanup(), which attempts to free the vdev.
>
> This error was introduced by commit 05ff686536f408ba6e8426b1b54d25bd3379fda2
> recently.
>
> Signed-off-by: Dunrong Huang <huangdr@cloud-times.com>
Reviewed-by: KONRAD Frederic <fred.konrad@greensocs.com>

Oops sorry for that :/
> ---
>   hw/virtio-blk.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/hw/virtio-blk.c b/hw/virtio-blk.c
> index e6f8875..f2143fd 100644
> --- a/hw/virtio-blk.c
> +++ b/hw/virtio-blk.c
> @@ -663,7 +663,7 @@ static int virtio_blk_device_init(VirtIODevice *vdev)
>       s->vq = virtio_add_queue(vdev, 128, virtio_blk_handle_output);
>   #ifdef CONFIG_VIRTIO_BLK_DATA_PLANE
>       if (!virtio_blk_data_plane_create(vdev, blk, &s->dataplane)) {
> -        virtio_cleanup(vdev);
> +        virtio_common_cleanup(vdev);
>           return -1;
>       }
>   #endif

  reply	other threads:[~2013-03-19  8:38 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-19  8:27 [Qemu-devel] [PATCH] virtio-blk: Do not segfault fault if failed to initialize dataplane Dunrong Huang
2013-03-19  8:37 ` KONRAD Frédéric [this message]
2013-03-19 10:33   ` Kevin Wolf
2013-03-19 13:28     ` KONRAD Frédéric

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=514823E3.3000102@greensocs.com \
    --to=fred.konrad@greensocs.com \
    --cc=aliguori@us.ibm.com \
    --cc=huangdr@cloud-times.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.