@@ -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)
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(-)