From 038335367d26287a9c67401fa42b05e84fb9443c Mon Sep 17 00:00:00 2001 From: Liu Long Date: Tue, 14 Jun 2022 13:18:21 +0800 Subject: [PATCH] DM: vsock: fix the memory leakage bug Fix the memory leakage issue caused by incomplete deinit flow. Tracked-On: #7759 Signed-off-by: Liu Long Acked-by: Wang, Yu1 --- devicemodel/hw/pci/virtio/vhost_vsock.c | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/devicemodel/hw/pci/virtio/vhost_vsock.c b/devicemodel/hw/pci/virtio/vhost_vsock.c index 951389ca8..b5ec62e31 100644 --- a/devicemodel/hw/pci/virtio/vhost_vsock.c +++ b/devicemodel/hw/pci/virtio/vhost_vsock.c @@ -208,25 +208,21 @@ fail: return NULL; } -static int +static void vhost_vsock_deinit(struct vhost_vsock *vhost_vsock) { int rc; rc = vhost_vsock_stop(vhost_vsock); - if (rc < 0) { + if (rc < 0) pr_err("vhost_dev_stop is failed!\n"); - return -1; - } rc = vhost_dev_deinit(&vhost_vsock->vdev); - if (rc < 0) { + if (rc < 0) pr_err("vhost_dev_deinit is failed!\n"); - return -1; - } + close(vhost_vsock->vhost_fd); free(vhost_vsock); - return 0; } static void @@ -323,10 +319,9 @@ virtio_vhost_vsock_deinit(struct vmctx *ctx, struct pci_vdev *dev, char *opts) if (dev->arg) { vsock = (struct virtio_vsock *) dev->arg; - if (vsock->vhost_vsock) { + if (vsock->vhost_vsock) vhost_vsock_deinit(vsock->vhost_vsock); - } - pr_dbg("%s: done\n", __func__); + pr_dbg("%s: done\n", __func__); } else pr_err("%s: NULL!\n", __func__); }