Virtiofsd: fix memory leak on fuse queueinfo
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.liu@linux.alibaba.com> Signed-off-by: Eric Ren <renzhen@linux.alibaba.com> Reviewed-by: Misono Tomohiro <misono.tomohiro@jp.fujitsu.com> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
This commit is contained in:
parent
fc3f0041b4
commit
740b0b700a
@ -625,6 +625,8 @@ static void fv_queue_cleanup_thread(struct fv_VuDev *vud, int qidx)
|
|||||||
}
|
}
|
||||||
close(ourqi->kill_fd);
|
close(ourqi->kill_fd);
|
||||||
ourqi->kick_fd = -1;
|
ourqi->kick_fd = -1;
|
||||||
|
free(vud->qi[qidx]);
|
||||||
|
vud->qi[qidx] = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Callback from libvhost-user on start or stop of a queue */
|
/* Callback from libvhost-user on start or stop of a queue */
|
||||||
@ -884,6 +886,12 @@ int virtio_session_mount(struct fuse_session *se)
|
|||||||
void virtio_session_close(struct fuse_session *se)
|
void virtio_session_close(struct fuse_session *se)
|
||||||
{
|
{
|
||||||
close(se->vu_socketfd);
|
close(se->vu_socketfd);
|
||||||
|
|
||||||
|
if (!se->virtio_dev) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
free(se->virtio_dev->qi);
|
||||||
free(se->virtio_dev);
|
free(se->virtio_dev);
|
||||||
se->virtio_dev = NULL;
|
se->virtio_dev = NULL;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user