2022-09-17 09:29:49

by Ye Bin

[permalink] [raw]
Subject: [PATCH -next] jbd2: add miss release buffer head in fc_do_one_pass()

In fc_do_one_pass() miss release buffer head after use which will lead
to reference count leak.

Signed-off-by: Ye Bin <[email protected]>
---
fs/jbd2/recovery.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
index 1f878c315b03..8286a9ec122f 100644
--- a/fs/jbd2/recovery.c
+++ b/fs/jbd2/recovery.c
@@ -261,6 +261,7 @@ static int fc_do_one_pass(journal_t *journal,
err = journal->j_fc_replay_callback(journal, bh, pass,
next_fc_block - journal->j_fc_first,
expected_commit_id);
+ brelse(bh);
next_fc_block++;
if (err < 0 || err == JBD2_FC_REPLAY_STOP)
break;
--
2.31.1


2022-09-19 12:45:20

by Jan Kara

[permalink] [raw]
Subject: Re: [PATCH -next] jbd2: add miss release buffer head in fc_do_one_pass()

On Sat 17-09-22 17:38:05, Ye Bin wrote:
> In fc_do_one_pass() miss release buffer head after use which will lead
> to reference count leak.
>
> Signed-off-by: Ye Bin <[email protected]>

Indeed. Good catch! Feel free to add:

Reviewed-by: Jan Kara <[email protected]>

Honza

> ---
> fs/jbd2/recovery.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/fs/jbd2/recovery.c b/fs/jbd2/recovery.c
> index 1f878c315b03..8286a9ec122f 100644
> --- a/fs/jbd2/recovery.c
> +++ b/fs/jbd2/recovery.c
> @@ -261,6 +261,7 @@ static int fc_do_one_pass(journal_t *journal,
> err = journal->j_fc_replay_callback(journal, bh, pass,
> next_fc_block - journal->j_fc_first,
> expected_commit_id);
> + brelse(bh);
> next_fc_block++;
> if (err < 0 || err == JBD2_FC_REPLAY_STOP)
> break;
> --
> 2.31.1
>
--
Jan Kara <[email protected]>
SUSE Labs, CR