I was wrong here, but brelse is lost in next error in this function. I'll resend new patch. On 11/7/18 6:25 PM, Theodore Y. Ts'o wrote: > On Wed, Oct 31, 2018 at 10:12:18PM +0300, Vasily Averin wrote: >> Fixes dc6982ff4db1 ("ext4: refactor code to read directory blocks ...") # 3.9 >> >> Signed-off-by: Vasily Averin <vvs@xxxxxxxxxxxxx> >> --- >> fs/ext4/namei.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c >> index d388cce72db2..1a21e59ede72 100644 >> --- a/fs/ext4/namei.c >> +++ b/fs/ext4/namei.c >> @@ -111,6 +111,7 @@ static struct buffer_head *__ext4_read_dirblock(struct inode *inode, >> if (!bh) { >> ext4_error_inode(inode, func, line, block, >> "Directory hole found"); >> + brelse(bh); >> return ERR_PTR(-EFSCORRUPTED); >> } >> dirent = (struct ext4_dir_entry *) bh->b_data; > > Inside the conditional, bh == NULL, so the brelse isn't needed. > > Cheers, > > - Ted >