From: Darrick J. Wong Date: Tue, 2 Sep 2025 18:02:43 +0000 (-0700) Subject: fuse2fs: free global_fs after a failed ext2fs_close call X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=c8088d9e492f0a72bcd591d78bc99a8721f9fe5b;p=thirdparty%2Fe2fsprogs.git fuse2fs: free global_fs after a failed ext2fs_close call If ext2fs_close fails for any reason, it won't free the ext2_filsys object or any of the other things that hang off of it, like the io managers and whatnot. Right now this results in a memory leak of global_fs, which is mostly benign because we're nearly to the end of main() anyway. However, a future patch will move the ext2fs_close call to op_destroy prior to introducing iomap support, which means that we won't close the (O_EXCL) block device before returning from umount, which will cause problems with fstests and the user expectation that block devices are closed when umount(8) returns. Therefore, free the context after a failed close. Cc: # v1.43.7 Fixes: 6ae16a6814f47c ("misc: clean up error handling for ext2fs_run_ext3_journal()") Signed-off-by: "Darrick J. Wong" --- diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c index 4d92e1e8..0a862ea0 100644 --- a/misc/fuse2fs.c +++ b/misc/fuse2fs.c @@ -4904,10 +4904,9 @@ out: fflush(orig_stderr); } if (global_fs) { - err = ext2fs_close(global_fs); + err = ext2fs_close_free(&global_fs); if (err) com_err(argv[0], err, "while closing fs"); - global_fs = NULL; } if (fctx.lockfile) { if (unlink(fctx.lockfile)) {