The commit 6050d47adcad
("ext4: bail out from make_indexed_dir() on first error")
miss to release bh in make_indexed_dir.
Signed-off-by: yangsheng <redacted>
---
fs/ext4/namei.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 38ca0fe..465f960 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -2058,19 +2058,18 @@ static int make_indexed_dir(handle_t *handle, struct ext4_filename *fname,
retval = PTR_ERR(de);
goto out_frames;
}
- dx_release(frames);
retval = add_dirent_to_buf(handle, fname, dir, inode, de, bh);
- brelse(bh);
- return retval;
out_frames:
/*
* Even if the block split failed, we have to properly write
* out all the changes we did so far. Otherwise we can end up
* with corrupted filesystem.
*/
- ext4_mark_inode_dirty(handle, dir);
+ if (retval)
+ ext4_mark_inode_dirty(handle, dir);
dx_release(frames);
+ brelse(bh);
return retval;
}