e1932cf914
Receive/transmit/event vqs forgot to cleanup in vhost_vsock_unrealize. This patch save receive/transmit vq pointer in realize() and cleanup vqs through those vq pointers in unrealize(). The leak stack is as follow: Direct leak of 21504 byte(s) in 3 object(s) allocated from: #0 0x7f86a1356970 (/lib64/libasan.so.5+0xef970) ??:? #1 0x7f86a09aa49d (/lib64/libglib-2.0.so.0+0x5249d) ??:? #2 0x5604852f85ca (./x86_64-softmmu/qemu-system-x86_64+0x2c3e5ca) /mnt/sdb/qemu/hw/virtio/virtio.c:2333 #3 0x560485356208 (./x86_64-softmmu/qemu-system-x86_64+0x2c9c208) /mnt/sdb/qemu/hw/virtio/vhost-vsock.c:339 #4 0x560485305a17 (./x86_64-softmmu/qemu-system-x86_64+0x2c4ba17) /mnt/sdb/qemu/hw/virtio/virtio.c:3531 #5 0x5604858e6b65 (./x86_64-softmmu/qemu-system-x86_64+0x322cb65) /mnt/sdb/qemu/hw/core/qdev.c:865 #6 0x5604861e6c41 (./x86_64-softmmu/qemu-system-x86_64+0x3b2cc41) /mnt/sdb/qemu/qom/object.c:2102 Reported-by: Euler Robot <euler.robot@huawei.com> Signed-off-by: Pan Nengyuan <pannengyuan@huawei.com> Message-Id: <20200115062535.50644-1-pannengyuan@huawei.com> Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
44 lines
953 B
C
44 lines
953 B
C
/*
|
|
* Vhost vsock virtio device
|
|
*
|
|
* Copyright 2015 Red Hat, Inc.
|
|
*
|
|
* Authors:
|
|
* Stefan Hajnoczi <stefanha@redhat.com>
|
|
*
|
|
* This work is licensed under the terms of the GNU GPL, version 2 or
|
|
* (at your option) any later version. See the COPYING file in the
|
|
* top-level directory.
|
|
*/
|
|
|
|
#ifndef QEMU_VHOST_VSOCK_H
|
|
#define QEMU_VHOST_VSOCK_H
|
|
|
|
#include "hw/virtio/virtio.h"
|
|
#include "hw/virtio/vhost.h"
|
|
|
|
#define TYPE_VHOST_VSOCK "vhost-vsock-device"
|
|
#define VHOST_VSOCK(obj) \
|
|
OBJECT_CHECK(VHostVSock, (obj), TYPE_VHOST_VSOCK)
|
|
|
|
typedef struct {
|
|
uint64_t guest_cid;
|
|
char *vhostfd;
|
|
} VHostVSockConf;
|
|
|
|
typedef struct {
|
|
/*< private >*/
|
|
VirtIODevice parent;
|
|
VHostVSockConf conf;
|
|
struct vhost_virtqueue vhost_vqs[2];
|
|
struct vhost_dev vhost_dev;
|
|
VirtQueue *event_vq;
|
|
VirtQueue *recv_vq;
|
|
VirtQueue *trans_vq;
|
|
QEMUTimer *post_load_timer;
|
|
|
|
/*< public >*/
|
|
} VHostVSock;
|
|
|
|
#endif /* QEMU_VHOST_VSOCK_H */
|