vhost-user-fs: Back up vqs before cleaning up vhost_dev
authorAkihiko Odaki <akihiko.odaki@daynix.com>
Mon, 30 Jan 2023 14:02:25 +0000 (23:02 +0900)
committerStefan Hajnoczi <stefanha@redhat.com>
Thu, 9 Feb 2023 15:21:11 +0000 (10:21 -0500)
vhost_dev_cleanup() clears vhost_dev so back up its vqs member to free
the memory pointed by the member.

Fixes: 98fc1ada4c ("virtio: add vhost-user-fs base device")
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20230130140225.77964-1-akihiko.odaki@daynix.com>

hw/virtio/vhost-user-fs.c

index f5049735acf65159745a63b9a52b5760397bc35f..83fc20e49e6554af21e8810d7c1089fc9bae5652 100644 (file)
@@ -273,6 +273,7 @@ static void vuf_device_unrealize(DeviceState *dev)
 {
     VirtIODevice *vdev = VIRTIO_DEVICE(dev);
     VHostUserFS *fs = VHOST_USER_FS(dev);
+    struct vhost_virtqueue *vhost_vqs = fs->vhost_dev.vqs;
     int i;
 
     /* This will stop vhost backend if appropriate. */
@@ -288,8 +289,7 @@ static void vuf_device_unrealize(DeviceState *dev)
     }
     g_free(fs->req_vqs);
     virtio_cleanup(vdev);
-    g_free(fs->vhost_dev.vqs);
-    fs->vhost_dev.vqs = NULL;
+    g_free(vhost_vqs);
 }
 
 static struct vhost_dev *vuf_get_vhost(VirtIODevice *vdev)