2021-04-23 12:44:22

by Khaled Romdhani

[permalink] [raw]
Subject: [PATCH-next] fs/btrfs: Fix uninitialized variable

The variable 'zone' is uninitialized which
introduce some build warning.

It is not always set or overwritten within
the function. So explicitly initialize it.

Reported-by: kernel test robot <[email protected]>
Signed-off-by: Khaled ROMDHANI <[email protected]>
---
fs/btrfs/zoned.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
index 432509f4b3ac..42f99b25127f 100644
--- a/fs/btrfs/zoned.c
+++ b/fs/btrfs/zoned.c
@@ -136,7 +136,7 @@ static int sb_write_pointer(struct block_device *bdev, struct blk_zone *zones,
*/
static inline u32 sb_zone_number(int shift, int mirror)
{
- u64 zone;
+ u64 zone = 0;

ASSERT(mirror < BTRFS_SUPER_MIRROR_MAX);
switch (mirror) {

base-commit: c05b2a58c9ed11bd753f1e64695bd89da715fbaa
--
2.17.1


2021-04-26 20:24:45

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH-next] fs/btrfs: Fix uninitialized variable

On Fri, Apr 23, 2021 at 01:42:01PM +0100, Khaled ROMDHANI wrote:
> The variable 'zone' is uninitialized which
> introduce some build warning.
>
> It is not always set or overwritten within
> the function. So explicitly initialize it.
>
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Khaled ROMDHANI <[email protected]>
> ---
> fs/btrfs/zoned.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
> index 432509f4b3ac..42f99b25127f 100644
> --- a/fs/btrfs/zoned.c
> +++ b/fs/btrfs/zoned.c
> @@ -136,7 +136,7 @@ static int sb_write_pointer(struct block_device *bdev, struct blk_zone *zones,
> */
> static inline u32 sb_zone_number(int shift, int mirror)
> {
> - u64 zone;
> + u64 zone = 0;

This is exactly same as v1
https://lore.kernel.org/linux-btrfs/[email protected]/

It does fix the build warning but does not make sense in the code
because it would would silently let mirror == 4 pass. I think there was
enough feedback under the previous posts how to fix that properly.

2021-04-27 12:19:10

by Khaled Romdhani

[permalink] [raw]
Subject: Re: [PATCH-next] fs/btrfs: Fix uninitialized variable

On Mon, Apr 26, 2021 at 10:19:29PM +0200, David Sterba wrote:
> On Fri, Apr 23, 2021 at 01:42:01PM +0100, Khaled ROMDHANI wrote:
> > The variable 'zone' is uninitialized which
> > introduce some build warning.
> >
> > It is not always set or overwritten within
> > the function. So explicitly initialize it.
> >
> > Reported-by: kernel test robot <[email protected]>
> > Signed-off-by: Khaled ROMDHANI <[email protected]>
> > ---
> > fs/btrfs/zoned.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/btrfs/zoned.c b/fs/btrfs/zoned.c
> > index 432509f4b3ac..42f99b25127f 100644
> > --- a/fs/btrfs/zoned.c
> > +++ b/fs/btrfs/zoned.c
> > @@ -136,7 +136,7 @@ static int sb_write_pointer(struct block_device *bdev, struct blk_zone *zones,
> > */
> > static inline u32 sb_zone_number(int shift, int mirror)
> > {
> > - u64 zone;
> > + u64 zone = 0;
>
> This is exactly same as v1
> https://lore.kernel.org/linux-btrfs/[email protected]/
>
> It does fix the build warning but does not make sense in the code
> because it would would silently let mirror == 4 pass. I think there was
> enough feedback under the previous posts how to fix that properly.

Yes, it fixes the build warning. I implemented a tiny test
program before sending the patch. In which I explicitly
set 'm=5' to check the change results:

[356843.099365] assertion failed: z, in /home/khaled/fs_btrfs/test3.c:30

From the above output message, I think that it catchs the assertion.
Sorry, but let me know if I am missing something.

I absolutly agree with you regarding the waste of memory
when doing some pointless initializations. I will, come
back with a V2.

Thanks.