virtiofsd: cleanup allocated resource in se
authorLiu Bo <bo.liu@linux.alibaba.com>
Thu, 6 Jun 2019 21:43:52 +0000 (05:43 +0800)
committerDr. David Alan Gilbert <dgilbert@redhat.com>
Thu, 23 Jan 2020 16:41:37 +0000 (16:41 +0000)
This cleans up unfreed resources in se on quiting, including
se->virtio_dev, se->vu_socket_path, se->vu_socketfd.

Signed-off-by: Liu Bo <bo.liu@linux.alibaba.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
tools/virtiofsd/fuse_lowlevel.c
tools/virtiofsd/fuse_virtio.c
tools/virtiofsd/fuse_virtio.h

index 65f91dabae214627a87afdd7cebb5d935962c866..440508a6ec58b3e76cb35148bf37feee14e506b9 100644 (file)
@@ -2532,6 +2532,13 @@ void fuse_session_destroy(struct fuse_session *se)
     if (se->fd != -1) {
         close(se->fd);
     }
+
+    if (se->vu_socket_path) {
+        virtio_session_close(se);
+        free(se->vu_socket_path);
+        se->vu_socket_path = NULL;
+    }
+
     free(se);
 }
 
index 7a8774a3eefeb54c084c4ef65f4dbbcbc93e2ce8..e7bd772805c969c7966e11a4f8188473eca64ffe 100644 (file)
@@ -833,3 +833,10 @@ int virtio_session_mount(struct fuse_session *se)
 
     return 0;
 }
+
+void virtio_session_close(struct fuse_session *se)
+{
+    close(se->vu_socketfd);
+    free(se->virtio_dev);
+    se->virtio_dev = NULL;
+}
index cc676b91930a7c69ade3b800149712f599497f93..111684032ceb13744cd63c58868f9bef407f3c71 100644 (file)
@@ -19,7 +19,7 @@
 struct fuse_session;
 
 int virtio_session_mount(struct fuse_session *se);
-
+void virtio_session_close(struct fuse_session *se);
 int virtio_loop(struct fuse_session *se);