Whamcloud - gitweb
fuse2fs: fix error bailout in op_create
authorDarrick J. Wong <djwong@kernel.org>
Wed, 11 Jun 2025 16:44:01 +0000 (09:44 -0700)
committerTheodore Ts'o <tytso@mit.edu>
Thu, 12 Jun 2025 16:57:54 +0000 (14:27 -0230)
Tim Woodall pointed out that op_create returns garbage error codes if
the ext2fs_extent_open2 in op_create fails.  Worse than that, it also
neglects to drop the bfl and leaks temp_path.  Let's fix all that.

Cc: linux-ext4@vger.kernel.org # v1.43
Fixes: 81cbf1ef4f5dab ("misc: add fuse2fs, a FUSE server for e2fsprogs")
Reported-by: Tim Woodall <debianbugs@woodall.me.uk>
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
misc/fuse2fs.c

index 97b1c5b..d889bda 100644 (file)
@@ -3307,8 +3307,11 @@ static int op_create(const char *path, mode_t mode, struct fuse_file_info *fp)
                inode.i_flags &= ~EXT4_EXTENTS_FL;
                ret = ext2fs_extent_open2(fs, child,
                                          EXT2_INODE(&inode), &handle);
-               if (ret)
-                       return ret;
+               if (ret) {
+                       ret = translate_error(fs, child, err);
+                       goto out2;
+               }
+
                ext2fs_extent_free(handle);
        }