2020-06-20 06:20:16

by Zhang Yi

[permalink] [raw]
Subject: [PATCH] jbd2: add the missing unlock_buffer() in the error path of jbd2_write_superblock()

jbd2_write_superblock() is under the buffer lock of journal superblock
before ending that superblock write, so add a missing unlock_buffer() in
in the error path before submitting buffer.

Fixes: 742b06b5628f ("jbd2: check superblock mapped prior to committing")
Signed-off-by: zhangyi (F) <[email protected]>
Cc: [email protected]
---
fs/jbd2/journal.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
index a49d0e670ddf..55c4ec4edf96 100644
--- a/fs/jbd2/journal.c
+++ b/fs/jbd2/journal.c
@@ -1366,8 +1366,10 @@ static int jbd2_write_superblock(journal_t *journal, int write_flags)
int ret;

/* Buffer got discarded which means block device got invalidated */
- if (!buffer_mapped(bh))
+ if (!buffer_mapped(bh)) {
+ unlock_buffer(bh);
return -EIO;
+ }

trace_jbd2_write_superblock(journal, write_flags);
if (!(journal->j_flags & JBD2_BARRIER))
--
2.25.4


2020-07-08 11:05:25

by Ritesh Harjani

[permalink] [raw]
Subject: Re: [PATCH] jbd2: add the missing unlock_buffer() in the error path of jbd2_write_superblock()



On 6/20/20 11:49 AM, zhangyi (F) wrote:
> jbd2_write_superblock() is under the buffer lock of journal superblock
> before ending that superblock write, so add a missing unlock_buffer() in
> in the error path before submitting buffer.
>
> Fixes: 742b06b5628f ("jbd2: check superblock mapped prior to committing")
> Signed-off-by: zhangyi (F) <[email protected]>
> Cc: [email protected]

LGTM, feel free to add
Reviewed-by: Ritesh Harjani <[email protected]>


> ---
> fs/jbd2/journal.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/fs/jbd2/journal.c b/fs/jbd2/journal.c
> index a49d0e670ddf..55c4ec4edf96 100644
> --- a/fs/jbd2/journal.c
> +++ b/fs/jbd2/journal.c
> @@ -1366,8 +1366,10 @@ static int jbd2_write_superblock(journal_t *journal, int write_flags)
> int ret;
>
> /* Buffer got discarded which means block device got invalidated */
> - if (!buffer_mapped(bh))
> + if (!buffer_mapped(bh)) {
> + unlock_buffer(bh);
> return -EIO;
> + }
>
> trace_jbd2_write_superblock(journal, write_flags);
> if (!(journal->j_flags & JBD2_BARRIER))
>

2020-08-06 05:07:23

by Theodore Ts'o

[permalink] [raw]
Subject: Re: [PATCH] jbd2: add the missing unlock_buffer() in the error path of jbd2_write_superblock()

On Sat, Jun 20, 2020 at 02:19:48PM +0800, zhangyi (F) wrote:
> jbd2_write_superblock() is under the buffer lock of journal superblock
> before ending that superblock write, so add a missing unlock_buffer() in
> in the error path before submitting buffer.
>
> Fixes: 742b06b5628f ("jbd2: check superblock mapped prior to committing")
> Signed-off-by: zhangyi (F) <[email protected]>
> Cc: [email protected]

Thanks, applied.

- Ted