From: Liu Bo <bo....@linux.alibaba.com> This offers an helper function for lo_data's cleanup.
Signed-off-by: Liu Bo <bo....@linux.alibaba.com> --- tools/virtiofsd/passthrough_ll.c | 37 ++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c index 45cf466178..097033aa00 100644 --- a/tools/virtiofsd/passthrough_ll.c +++ b/tools/virtiofsd/passthrough_ll.c @@ -2439,6 +2439,26 @@ static gboolean lo_key_equal(gconstpointer a, gconstpointer b) return la->ino == lb->ino && la->dev == lb->dev; } +static void fuse_lo_data_cleanup(struct lo_data *lo) +{ + if (lo->inodes) { + g_hash_table_destroy(lo->inodes); + } + lo_map_destroy(&lo->fd_map); + lo_map_destroy(&lo->dirp_map); + lo_map_destroy(&lo->ino_map); + + if (lo->proc_self_fd >= 0) { + close(lo->proc_self_fd); + } + + if (lo->root.fd >= 0) { + close(lo->root.fd); + } + + free((char *)lo->source); +} + int main(int argc, char *argv[]) { struct fuse_args args = FUSE_ARGS_INIT(argc, argv); @@ -2594,22 +2614,7 @@ err_out2: err_out1: fuse_opt_free_args(&args); - if (lo.inodes) { - g_hash_table_destroy(lo.inodes); - } - lo_map_destroy(&lo.fd_map); - lo_map_destroy(&lo.dirp_map); - lo_map_destroy(&lo.ino_map); - - if (lo.proc_self_fd >= 0) { - close(lo.proc_self_fd); - } - - if (lo.root.fd >= 0) { - close(lo.root.fd); - } - - free((char *)lo.source); + fuse_lo_data_cleanup(&lo); return ret ? 1 : 0; } -- 2.23.0