From: Darrick J. Wong <djwong@xxxxxxxxxx> 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@xxxxxxxxxxxxxxx> # v1.43 Fixes: 81cbf1ef4f5dab ("misc: add fuse2fs, a FUSE server for e2fsprogs") Reported-by: Tim Woodall <debianbugs@xxxxxxxxxxxxx> Signed-off-by: "Darrick J. Wong" <djwong@xxxxxxxxxx> --- misc/fuse2fs.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/misc/fuse2fs.c b/misc/fuse2fs.c index ad4795ae4ed907..cc023065727fd5 100644 --- a/misc/fuse2fs.c +++ b/misc/fuse2fs.c @@ -3306,8 +3306,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); }