diff options
author | Li Feng | 2020-03-23 06:29:24 +0100 |
---|---|---|
committer | Michael S. Tsirkin | 2020-03-29 15:52:13 +0200 |
commit | 9d283f85d755285bf1b1bfcb1ab275239dbf2c7b (patch) | |
tree | f1461461c7482e6e18af9d2063679895ac6a5787 /hw/block/vhost-user-blk.c | |
parent | hw/i386/amd_iommu.c: Fix corruption of log events passed to guest (diff) | |
download | qemu-9d283f85d755285bf1b1bfcb1ab275239dbf2c7b.tar.gz qemu-9d283f85d755285bf1b1bfcb1ab275239dbf2c7b.tar.xz qemu-9d283f85d755285bf1b1bfcb1ab275239dbf2c7b.zip |
fix vhost_user_blk_watch crash
the G_IO_HUP is watched in tcp_chr_connect, and the callback
vhost_user_blk_watch is not needed, because tcp_chr_hup is registered as
callback. And it will close the tcp link.
Signed-off-by: Li Feng <fengli@smartx.com>
Message-Id: <20200323052924.29286-1-fengli@smartx.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/block/vhost-user-blk.c')
-rw-r--r-- | hw/block/vhost-user-blk.c | 19 |
1 files changed, 0 insertions, 19 deletions
diff --git a/hw/block/vhost-user-blk.c b/hw/block/vhost-user-blk.c index 12925a47ec..17df5338e7 100644 --- a/hw/block/vhost-user-blk.c +++ b/hw/block/vhost-user-blk.c @@ -349,18 +349,6 @@ static void vhost_user_blk_disconnect(DeviceState *dev) vhost_dev_cleanup(&s->dev); } -static gboolean vhost_user_blk_watch(GIOChannel *chan, GIOCondition cond, - void *opaque) -{ - DeviceState *dev = opaque; - VirtIODevice *vdev = VIRTIO_DEVICE(dev); - VHostUserBlk *s = VHOST_USER_BLK(vdev); - - qemu_chr_fe_disconnect(&s->chardev); - - return true; -} - static void vhost_user_blk_event(void *opaque, QEMUChrEvent event) { DeviceState *dev = opaque; @@ -373,15 +361,9 @@ static void vhost_user_blk_event(void *opaque, QEMUChrEvent event) qemu_chr_fe_disconnect(&s->chardev); return; } - s->watch = qemu_chr_fe_add_watch(&s->chardev, G_IO_HUP, - vhost_user_blk_watch, dev); break; case CHR_EVENT_CLOSED: vhost_user_blk_disconnect(dev); - if (s->watch) { - g_source_remove(s->watch); - s->watch = 0; - } break; case CHR_EVENT_BREAK: case CHR_EVENT_MUX_IN: @@ -428,7 +410,6 @@ static void vhost_user_blk_device_realize(DeviceState *dev, Error **errp) s->inflight = g_new0(struct vhost_inflight, 1); s->vhost_vqs = g_new0(struct vhost_virtqueue, s->num_queues); - s->watch = 0; s->connected = false; qemu_chr_fe_set_handlers(&s->chardev, NULL, NULL, vhost_user_blk_event, |