From: Liu Bo <bo....@linux.alibaba.com> For fuse's queueinfo, both queueinfo array and queueinfos are allocated in fv_queue_set_started() but not cleaned up when the daemon process quits.
This fixes the leak in proper places. Signed-off-by: Liu Bo <bo....@linux.alibaba.com> Signed-off-by: Eric Ren <renz...@linux.alibaba.com> --- tools/virtiofsd/fuse_virtio.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tools/virtiofsd/fuse_virtio.c b/tools/virtiofsd/fuse_virtio.c index 7b22ae8d4f..a364f23d5d 100644 --- a/tools/virtiofsd/fuse_virtio.c +++ b/tools/virtiofsd/fuse_virtio.c @@ -671,6 +671,8 @@ static void fv_queue_set_started(VuDev *dev, int qidx, bool started) } close(ourqi->kill_fd); ourqi->kick_fd = -1; + free(vud->qi[qidx]); + vud->qi[qidx] = NULL; } } @@ -878,6 +880,13 @@ int virtio_session_mount(struct fuse_session *se) void virtio_session_close(struct fuse_session *se) { close(se->vu_socketfd); + + if (!se->virtio_dev) { + return; + } + + close(se->vu_socketfd); + free(se->virtio_dev->qi); free(se->virtio_dev); se->virtio_dev = NULL; } -- 2.23.0