2022-05-14 16:34:55

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] btrfs: Fix an error handling path in btrfs_read_sys_array()

If alloc_dummy_extent_buffer() we should return an error code, not 0 that
would mean success.

Fixes: a1fc41ac28d3 ("btrfs: use dummy extent buffer for super block sys chunk array read")
Signed-off-by: Christophe JAILLET <[email protected]>
---
fs/btrfs/volumes.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index b2d5a54ea172..9c20049d1fec 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -7359,7 +7359,7 @@ int btrfs_read_sys_array(struct btrfs_fs_info *fs_info)
*/
sb = alloc_dummy_extent_buffer(fs_info, BTRFS_SUPER_INFO_OFFSET);
if (!sb)
- return PTR_ERR(sb);
+ return -ENOMEM;
set_extent_buffer_uptodate(sb);

write_extent_buffer(sb, super_copy, 0, BTRFS_SUPER_INFO_SIZE);
--
2.34.1



2022-05-16 14:12:23

by Qu Wenruo

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix an error handling path in btrfs_read_sys_array()



On 2022/5/14 20:01, Christophe JAILLET wrote:
> If alloc_dummy_extent_buffer() we should return an error code, not 0 that
> would mean success.
>
> Fixes: a1fc41ac28d3 ("btrfs: use dummy extent buffer for super block sys chunk array read")
> Signed-off-by: Christophe JAILLET <[email protected]>

Reviewed-by: Qu Wenruo <[email protected]>

All my fault, thanks for catching it.
Qu

> ---
> fs/btrfs/volumes.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
> index b2d5a54ea172..9c20049d1fec 100644
> --- a/fs/btrfs/volumes.c
> +++ b/fs/btrfs/volumes.c
> @@ -7359,7 +7359,7 @@ int btrfs_read_sys_array(struct btrfs_fs_info *fs_info)
> */
> sb = alloc_dummy_extent_buffer(fs_info, BTRFS_SUPER_INFO_OFFSET);
> if (!sb)
> - return PTR_ERR(sb);
> + return -ENOMEM;
> set_extent_buffer_uptodate(sb);
>
> write_extent_buffer(sb, super_copy, 0, BTRFS_SUPER_INFO_SIZE);

2022-05-16 19:40:32

by Christophe JAILLET

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix an error handling path in btrfs_read_sys_array()

Le 16/05/2022 à 17:01, David Sterba a écrit :
> On Mon, May 16, 2022 at 04:54:07PM +0300, Dan Carpenter wrote:
>> On Sun, May 15, 2022 at 06:57:25AM +0800, Qu Wenruo wrote:
>>>
>>>
>>> On 2022/5/14 20:01, Christophe JAILLET wrote:
>>>> If alloc_dummy_extent_buffer() we should return an error code, not 0 that
>>>> would mean success.
>>>>
>>>> Fixes: a1fc41ac28d3 ("btrfs: use dummy extent buffer for super block sys chunk array read")
>>>> Signed-off-by: Christophe JAILLET <[email protected]>
>>>
>>> Reviewed-by: Qu Wenruo <[email protected]>
>>>
>>> All my fault, thanks for catching it.
>>> Qu
>>>
>>
>> I sent this patch in January and David was going to fold it into the
>> original patch but it got lost. Thanks, Christophe!

Hi,

Not exactly.
Your patch was:
- if (IS_ERR(sb))
- return PTR_ERR(sb);
+ if (!sb)
+ return -ENOMEM;

Mine is only:
- return PTR_ERR(sb);
+ return -ENOMEM;

So for some reason, what you had reported was just half applied. (or
half fixed by someone else)

>
> I found my reply to your fix that I folded the fixup, but then it got
> lost for some reason. Probably because I picked the patchset from
> mailing list again and did not take the local branch. I'll fold the fix
> again as it' still in the unmerged branch. Thanks.
>

just in case, the Fixes tag in Dan's patch leads to:
"Notice: this object is not reachable from any branch."

I don't think that it is of any importance if the fix in folded, but in
case, I let you know.

CJ

2022-05-17 01:57:55

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix an error handling path in btrfs_read_sys_array()

On Mon, May 16, 2022 at 04:54:07PM +0300, Dan Carpenter wrote:
> On Sun, May 15, 2022 at 06:57:25AM +0800, Qu Wenruo wrote:
> >
> >
> > On 2022/5/14 20:01, Christophe JAILLET wrote:
> > > If alloc_dummy_extent_buffer() we should return an error code, not 0 that
> > > would mean success.
> > >
> > > Fixes: a1fc41ac28d3 ("btrfs: use dummy extent buffer for super block sys chunk array read")
> > > Signed-off-by: Christophe JAILLET <[email protected]>
> >
> > Reviewed-by: Qu Wenruo <[email protected]>
> >
> > All my fault, thanks for catching it.
> > Qu
> >
>
> I sent this patch in January and David was going to fold it into the
> original patch but it got lost. Thanks, Christophe!

I found my reply to your fix that I folded the fixup, but then it got
lost for some reason. Probably because I picked the patchset from
mailing list again and did not take the local branch. I'll fold the fix
again as it' still in the unmerged branch. Thanks.

2022-05-17 03:35:25

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix an error handling path in btrfs_read_sys_array()

On Sun, May 15, 2022 at 06:57:25AM +0800, Qu Wenruo wrote:
>
>
> On 2022/5/14 20:01, Christophe JAILLET wrote:
> > If alloc_dummy_extent_buffer() we should return an error code, not 0 that
> > would mean success.
> >
> > Fixes: a1fc41ac28d3 ("btrfs: use dummy extent buffer for super block sys chunk array read")
> > Signed-off-by: Christophe JAILLET <[email protected]>
>
> Reviewed-by: Qu Wenruo <[email protected]>
>
> All my fault, thanks for catching it.
> Qu
>

I sent this patch in January and David was going to fold it into the
original patch but it got lost. Thanks, Christophe!

regards,
dan carpenter


2022-05-17 15:20:11

by Dan Carpenter

[permalink] [raw]
Subject: Re: [PATCH] btrfs: Fix an error handling path in btrfs_read_sys_array()

On Mon, May 16, 2022 at 07:42:23PM +0200, Christophe JAILLET wrote:
> Le 16/05/2022 ? 17:01, David Sterba a ?crit?:
> > On Mon, May 16, 2022 at 04:54:07PM +0300, Dan Carpenter wrote:
> > > On Sun, May 15, 2022 at 06:57:25AM +0800, Qu Wenruo wrote:
> > > >
> > > >
> > > > On 2022/5/14 20:01, Christophe JAILLET wrote:
> > > > > If alloc_dummy_extent_buffer() we should return an error code, not 0 that
> > > > > would mean success.
> > > > >
> > > > > Fixes: a1fc41ac28d3 ("btrfs: use dummy extent buffer for super block sys chunk array read")
> > > > > Signed-off-by: Christophe JAILLET <[email protected]>
> > > >
> > > > Reviewed-by: Qu Wenruo <[email protected]>
> > > >
> > > > All my fault, thanks for catching it.
> > > > Qu
> > > >
> > >
> > > I sent this patch in January and David was going to fold it into the
> > > original patch but it got lost. Thanks, Christophe!
>
> Hi,
>
> Not exactly.
> Your patch was:
> - if (IS_ERR(sb))
> - return PTR_ERR(sb);
> + if (!sb)
> + return -ENOMEM;
>
> Mine is only:
> - return PTR_ERR(sb);
> + return -ENOMEM;
>
> So for some reason, what you had reported was just half applied. (or half
> fixed by someone else)
>

Oh that's interesting. I must have seen the same Smatch warning that
you saw and ignored it because I got confused which patch I had sent.
The kbuild-bot also tried to send a warning, but I squashed it for
the same reasons. So in terms of process issues and avoidable bugs this
one is partly my bad.

regards,
dan carpenter