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

Ye Bin posted 1 patch 3 years, 6 months ago
fs/jbd2/recovery.c | 1 +
1 file changed, 1 insertion(+)
[PATCH -next] jbd2: add miss release buffer head in fc_do_one_pass()
Posted by Ye Bin 3 years, 6 months ago
In fc_do_one_pass() miss release buffer head after use which will lead
to reference count leak.

Signed-off-by: Ye Bin <yebin10@huawei.com>
---
 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
Re: [PATCH -next] jbd2: add miss release buffer head in fc_do_one_pass()
Posted by Theodore Ts'o 3 years, 6 months ago
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 <tytso@mit.edu>
Re: [PATCH -next] jbd2: add miss release buffer head in fc_do_one_pass()
Posted by Jan Kara 3 years, 6 months ago
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 <yebin10@huawei.com>

Indeed. Good catch! Feel free to add:

Reviewed-by: Jan Kara <jack@suse.cz>

								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 <jack@suse.com>
SUSE Labs, CR