2022-09-17 09:29:49

by yebin (H)

[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

2022-09-30 03:22:25

by Theodore Ts'o

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

On Sat, 17 Sep 2022 17:38:05 +0800, Ye Bin wrote:
> In fc_do_one_pass() miss release buffer head after use which will lead
> to reference count leak.
>
>

Applied, thanks!

[1/1] jbd2: add miss release buffer head in fc_do_one_pass()
commit: 0f04cd3834a988a9c725fd396e3f88fe334f9f29

Best regards,
--
Theodore Ts'o <[email protected]>