From 31b9312f2f99ae481850ce8416f9aea5af307a77 Mon Sep 17 00:00:00 2001 From: Liu Long Date: Tue, 14 Jun 2022 13:28:47 +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 71228e94f..87a70fe92 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__); }