diff mbox series

[f2fs-dev,v3] fsck.f2fs: fix memleak in f2fs_create()

Message ID 20230605060853.679169-1-korotkov.maxim.s@gmail.com (mailing list archive)
State New
Headers show
Series [f2fs-dev,v3] fsck.f2fs: fix memleak in f2fs_create() | expand

Commit Message

Maxim Korotkov June 5, 2023, 6:08 a.m. UTC
In error handling cases, exiting a function without releasing memory

Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>
---
changelog: removed trailing indent
 fsck/dir.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Chao Yu June 5, 2023, 6:18 a.m. UTC | #1
On 2023/6/5 14:08, Maxim Korotkov wrote:
> In error handling cases, exiting a function without releasing memory
> 
> Signed-off-by: Maxim Korotkov <korotkov.maxim.s@gmail.com>

Reviewed-by: Chao Yu <chao@kernel.org>

Thanks,
diff mbox series

Patch

diff --git a/fsck/dir.c b/fsck/dir.c
index 4a3eb6e..793fe11 100644
--- a/fsck/dir.c
+++ b/fsck/dir.c
@@ -704,7 +704,8 @@  int f2fs_create(struct f2fs_sb_info *sbi, struct dentry *de)
 	ret = convert_inline_dentry(sbi, parent, ni.blk_addr);
 	if (ret) {
 		MSG(0, "Convert inline dentry for pino=%x failed.\n", de->pino);
-		return -1;
+		ret = -1;
+		goto free_parent_dir;
 	}
 
 	ret = f2fs_find_entry(sbi, parent, de);
@@ -713,6 +714,7 @@  int f2fs_create(struct f2fs_sb_info *sbi, struct dentry *de)
 					de->name, de->pino, ret);
 		if (de->file_type == F2FS_FT_REG_FILE)
 			de->ino = 0;
+		ret = 0;
 		goto free_parent_dir;
 	}
 
@@ -728,7 +730,8 @@  int f2fs_create(struct f2fs_sb_info *sbi, struct dentry *de)
 		if (hardlink_ni.blk_addr == NULL_ADDR) {
 			MSG(1, "No original inode for hard link to_ino=%x\n",
 				found_hardlink->to_ino);
-			return -1;
+			ret = -1;
+			goto free_child_dir;
 		}
 
 		/* Use previously-recorded inode */
@@ -750,6 +753,7 @@  int f2fs_create(struct f2fs_sb_info *sbi, struct dentry *de)
 	if (ret) {
 		MSG(0, "Skip the existing \"%s\" pino=%x ERR=%d\n",
 					de->name, de->pino, ret);
+		ret = 0;
 		goto free_child_dir;
 	}
 
@@ -804,7 +808,7 @@  free_child_dir:
 	free(child);
 free_parent_dir:
 	free(parent);
-	return 0;
+	return ret;
 }
 
 int f2fs_mkdir(struct f2fs_sb_info *sbi, struct dentry *de)