On 2024/12/19 19:00, Kemeng Shi wrote: > Add missing brelse for bh2 in ext4_dx_add_entry. > > Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx> It's a good catch, looks good to me. Reviewed-by: Zhang Yi <yi.zhang@xxxxxxxxxx> > --- > fs/ext4/namei.c | 16 ++++++++++++---- > 1 file changed, 12 insertions(+), 4 deletions(-) > > diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c > index 1012781ae9b4..adec145b6f7d 100644 > --- a/fs/ext4/namei.c > +++ b/fs/ext4/namei.c > @@ -2580,8 +2580,10 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname, > BUFFER_TRACE(frame->bh, "get_write_access"); > err = ext4_journal_get_write_access(handle, sb, frame->bh, > EXT4_JTR_NONE); > - if (err) > + if (err) { > + brelse(bh2); > goto journal_error; > + } > if (!add_level) { > unsigned icount1 = icount/2, icount2 = icount - icount1; > unsigned hash2 = dx_get_hash(entries + icount1); > @@ -2592,8 +2594,10 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname, > err = ext4_journal_get_write_access(handle, sb, > (frame - 1)->bh, > EXT4_JTR_NONE); > - if (err) > + if (err) { > + brelse(bh2); > goto journal_error; > + } > > memcpy((char *) entries2, (char *) (entries + icount1), > icount2 * sizeof(struct dx_entry)); > @@ -2612,8 +2616,10 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname, > dxtrace(dx_show_index("node", > ((struct dx_node *) bh2->b_data)->entries)); > err = ext4_handle_dirty_dx_node(handle, dir, bh2); > - if (err) > + if (err) { > + brelse(bh2); > goto journal_error; > + } > brelse (bh2); > err = ext4_handle_dirty_dx_node(handle, dir, > (frame - 1)->bh); > @@ -2638,8 +2644,10 @@ static int ext4_dx_add_entry(handle_t *handle, struct ext4_filename *fname, > "Creating %d level index...\n", > dxroot->info.indirect_levels)); > err = ext4_handle_dirty_dx_node(handle, dir, frame->bh); > - if (err) > + if (err) { > + brelse(bh2); > goto journal_error; > + } > err = ext4_handle_dirty_dx_node(handle, dir, bh2); > brelse(bh2); > restart = 1;