2023-03-24 02:15:30

by Genjian

[permalink] [raw]
Subject: [PATCH] btrfs: fix uninitialized variable warning

From: Genjian Zhang <[email protected]>

compiler warning:

../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
2703 | btrfs_setup_sprout(fs_info, seed_devices);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
70 | (__if_trace.miss_hit[1]++,1) : \
| ^
../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
1878 | u64 right_gen;
| ^~~~~~~~~

Initialize the uninitialized variables.

Reported-by: k2ci <[email protected]>
Signed-off-by: Genjian Zhang <[email protected]>
---
fs/btrfs/send.c | 2 +-
fs/btrfs/volumes.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index e5c963bb873d..af2e153543a5 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -1875,7 +1875,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen,
int left_ret;
int right_ret;
u64 left_gen;
- u64 right_gen;
+ u64 right_gen = 0;
struct btrfs_inode_info info;

ret = get_inode_info(sctx->send_root, ino, &info);
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 7823168c08a6..7163c98e47be 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2609,7 +2609,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
struct block_device *bdev;
struct super_block *sb = fs_info->sb;
struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
- struct btrfs_fs_devices *seed_devices;
+ struct btrfs_fs_devices *seed_devices = NULL;
u64 orig_super_total_bytes;
u64 orig_super_num_devices;
int ret = 0;
--
2.25.1


2023-03-24 02:28:39

by Qu Wenruo

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning



On 2023/3/24 10:08, Genjian wrote:
> From: Genjian Zhang <[email protected]>
>
> compiler warning:

Compiler version please.

>
> ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
> ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 2703 | btrfs_setup_sprout(fs_info, seed_devices);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
> ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 70 | (__if_trace.miss_hit[1]++,1) : \
> | ^
> ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
> 1878 | u64 right_gen;
> | ^~~~~~~~~
>
> Initialize the uninitialized variables.
>
> Reported-by: k2ci <[email protected]>
> Signed-off-by: Genjian Zhang <[email protected]>
> ---
> fs/btrfs/send.c | 2 +-
> fs/btrfs/volumes.c | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> index e5c963bb873d..af2e153543a5 100644
> --- a/fs/btrfs/send.c
> +++ b/fs/btrfs/send.c
> @@ -1875,7 +1875,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen,
> int left_ret;
> int right_ret;
> u64 left_gen;
> - u64 right_gen;
> + u64 right_gen = 0;

IIRC this is not my first time explaining why this is a false alert.

Thus please report your compiler version first.

Thanks,
Qu
> struct btrfs_inode_info info;
>
> ret = get_inode_info(sctx->send_root, ino, &info);
> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
> index 7823168c08a6..7163c98e47be 100644
> --- a/fs/btrfs/volumes.c
> +++ b/fs/btrfs/volumes.c
> @@ -2609,7 +2609,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
> struct block_device *bdev;
> struct super_block *sb = fs_info->sb;
> struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
> - struct btrfs_fs_devices *seed_devices;
> + struct btrfs_fs_devices *seed_devices = NULL;
> u64 orig_super_total_bytes;
> u64 orig_super_num_devices;
> int ret = 0;

2023-03-24 02:36:15

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning

On Fri, Mar 24, 2023 at 10:24:55AM +0800, Qu Wenruo wrote:
> On 2023/3/24 10:08, Genjian wrote:
> > From: Genjian Zhang <[email protected]>
> >
> > compiler warning:
>
> Compiler version please.
>
> >
> > ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
> > ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > 2703 | btrfs_setup_sprout(fs_info, seed_devices);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
> > ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > 70 | (__if_trace.miss_hit[1]++,1) : \
> > | ^
> > ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
> > 1878 | u64 right_gen;
> > | ^~~~~~~~~
> >
> > Initialize the uninitialized variables.
> >
> > Reported-by: k2ci <[email protected]>
> > Signed-off-by: Genjian Zhang <[email protected]>
> > ---
> > fs/btrfs/send.c | 2 +-
> > fs/btrfs/volumes.c | 2 +-
> > 2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> > index e5c963bb873d..af2e153543a5 100644
> > --- a/fs/btrfs/send.c
> > +++ b/fs/btrfs/send.c
> > @@ -1875,7 +1875,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen,
> > int left_ret;
> > int right_ret;
> > u64 left_gen;
> > - u64 right_gen;
> > + u64 right_gen = 0;
>
> IIRC this is not my first time explaining why this is a false alert.
>
> Thus please report your compiler version first.

This is probably because of the -Wmaybe-uninitialized we enabled, on
some combination of architecture and compiler. While I'm also interested
in the compiler and version we need to fix the warnings before 6.3 final.
We'd be gettting the warnings and reports/patches, which is wasting
peoples' time, it's not a big deal to initialize the variables. But
still I also want to know which version reports that.

2023-03-24 03:10:06

by Genjian

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning

On Fri, Mar 24, 2023 at 10:35 AM David Sterba <[email protected]> wrote:
>
> On Fri, Mar 24, 2023 at 10:24:55AM +0800, Qu Wenruo wrote:
> > On 2023/3/24 10:08, Genjian wrote:
> > > From: Genjian Zhang <[email protected]>
> > >
> > > compiler warning:
> >
> > Compiler version please.
> >
> > >
> > > ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
> > > ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > > 2703 | btrfs_setup_sprout(fs_info, seed_devices);
> > > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >
> > > ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
> > > ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > > 70 | (__if_trace.miss_hit[1]++,1) : \
> > > | ^
> > > ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
> > > 1878 | u64 right_gen;
> > > | ^~~~~~~~~
> > >
> > > Initialize the uninitialized variables.
> > >
> > > Reported-by: k2ci <[email protected]>
> > > Signed-off-by: Genjian Zhang <[email protected]>
> > > ---
> > > fs/btrfs/send.c | 2 +-
> > > fs/btrfs/volumes.c | 2 +-
> > > 2 files changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> > > index e5c963bb873d..af2e153543a5 100644
> > > --- a/fs/btrfs/send.c
> > > +++ b/fs/btrfs/send.c
> > > @@ -1875,7 +1875,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen,
> > > int left_ret;
> > > int right_ret;
> > > u64 left_gen;
> > > - u64 right_gen;
> > > + u64 right_gen = 0;
> >
> > IIRC this is not my first time explaining why this is a false alert.
> >
> > Thus please report your compiler version first.
>
> This is probably because of the -Wmaybe-uninitialized we enabled, on
> some combination of architecture and compiler. While I'm also interested
> in the compiler and version we need to fix the warnings before 6.3 final.
> We'd be gettting the warnings and reports/patches, which is wasting
> peoples' time, it's not a big deal to initialize the variables. But
> still I also want to know which version reports that.

aarch64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110 and
aarch64-linux-gnu-gcc (7.3.0-20190804.h30.ky10.aarch64 )

Thanks,

Genjian.

2023-03-24 04:48:42

by Qu Wenruo

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning



On 2023/3/24 11:05, genjian zhang wrote:
> On Fri, Mar 24, 2023 at 10:35 AM David Sterba <[email protected]> wrote:
>>
>> On Fri, Mar 24, 2023 at 10:24:55AM +0800, Qu Wenruo wrote:
>>> On 2023/3/24 10:08, Genjian wrote:
>>>> From: Genjian Zhang <[email protected]>
>>>>
>>>> compiler warning:
>>>
>>> Compiler version please.
>>>
>>>>
>>>> ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
>>>> ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>>> 2703 | btrfs_setup_sprout(fs_info, seed_devices);
>>>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>>>>
>>>> ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
>>>> ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
>>>> 70 | (__if_trace.miss_hit[1]++,1) : \
>>>> | ^
>>>> ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
>>>> 1878 | u64 right_gen;
>>>> | ^~~~~~~~~
>>>>
>>>> Initialize the uninitialized variables.
>>>>
>>>> Reported-by: k2ci <[email protected]>
>>>> Signed-off-by: Genjian Zhang <[email protected]>
>>>> ---
>>>> fs/btrfs/send.c | 2 +-
>>>> fs/btrfs/volumes.c | 2 +-
>>>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>>>
>>>> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
>>>> index e5c963bb873d..af2e153543a5 100644
>>>> --- a/fs/btrfs/send.c
>>>> +++ b/fs/btrfs/send.c
>>>> @@ -1875,7 +1875,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen,
>>>> int left_ret;
>>>> int right_ret;
>>>> u64 left_gen;
>>>> - u64 right_gen;
>>>> + u64 right_gen = 0;
>>>
>>> IIRC this is not my first time explaining why this is a false alert.
>>>
>>> Thus please report your compiler version first.
>>
>> This is probably because of the -Wmaybe-uninitialized we enabled, on
>> some combination of architecture and compiler. While I'm also interested
>> in the compiler and version we need to fix the warnings before 6.3 final.
>> We'd be gettting the warnings and reports/patches, which is wasting
>> peoples' time, it's not a big deal to initialize the variables. But
>> still I also want to know which version reports that.
>
> aarch64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110 and
> aarch64-linux-gnu-gcc (7.3.0-20190804.h30.ky10.aarch64 )

Latest GCC 10.x is already 10.3, and 7.x is already 7.5.

Either report to your distro and let them update the toolchain, or find
a way to make your bot shut up on the false alert.

>
> Thanks,
>
> Genjian.

2023-03-24 06:12:17

by Genjian

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning

On Fri, Mar 24, 2023 at 12:24 PM Qu Wenruo <[email protected]> wrote:
>
>
>
> On 2023/3/24 11:05, genjian zhang wrote:
> > On Fri, Mar 24, 2023 at 10:35 AM David Sterba <[email protected]> wrote:
> >>
> >> On Fri, Mar 24, 2023 at 10:24:55AM +0800, Qu Wenruo wrote:
> >>> On 2023/3/24 10:08, Genjian wrote:
> >>>> From: Genjian Zhang <[email protected]>
> >>>>
> >>>> compiler warning:
> >>>
> >>> Compiler version please.
> >>>
> >>>>
> >>>> ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
> >>>> ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >>>> 2703 | btrfs_setup_sprout(fs_info, seed_devices);
> >>>> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >>>>
> >>>> ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
> >>>> ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> >>>> 70 | (__if_trace.miss_hit[1]++,1) : \
> >>>> | ^
> >>>> ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
> >>>> 1878 | u64 right_gen;
> >>>> | ^~~~~~~~~
> >>>>
> >>>> Initialize the uninitialized variables.
> >>>>
> >>>> Reported-by: k2ci <[email protected]>
> >>>> Signed-off-by: Genjian Zhang <[email protected]>
> >>>> ---
> >>>> fs/btrfs/send.c | 2 +-
> >>>> fs/btrfs/volumes.c | 2 +-
> >>>> 2 files changed, 2 insertions(+), 2 deletions(-)
> >>>>
> >>>> diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
> >>>> index e5c963bb873d..af2e153543a5 100644
> >>>> --- a/fs/btrfs/send.c
> >>>> +++ b/fs/btrfs/send.c
> >>>> @@ -1875,7 +1875,7 @@ static int get_cur_inode_state(struct send_ctx *sctx, u64 ino, u64 gen,
> >>>> int left_ret;
> >>>> int right_ret;
> >>>> u64 left_gen;
> >>>> - u64 right_gen;
> >>>> + u64 right_gen = 0;
> >>>
> >>> IIRC this is not my first time explaining why this is a false alert.
> >>>
> >>> Thus please report your compiler version first.
> >>
> >> This is probably because of the -Wmaybe-uninitialized we enabled, on
> >> some combination of architecture and compiler. While I'm also interested
> >> in the compiler and version we need to fix the warnings before 6.3 final.
> >> We'd be gettting the warnings and reports/patches, which is wasting
> >> peoples' time, it's not a big deal to initialize the variables. But
> >> still I also want to know which version reports that.
> >
> > aarch64-linux-gnu-gcc (Debian 10.2.1-6) 10.2.1 20210110 and
> > aarch64-linux-gnu-gcc (7.3.0-20190804.h30.ky10.aarch64 )
>
> Latest GCC 10.x is already 10.3, and 7.x is already 7.5.
>
> Either report to your distro and let them update the toolchain, or find
> a way to make your bot shut up on the false alert.
>
> >
> > Thanks,
> >
> > Genjian.

OK, thank you for your suggestion and reply.

2023-04-06 19:13:09

by David Sterba

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning

On Fri, Mar 24, 2023 at 10:08:38AM +0800, Genjian wrote:
> From: Genjian Zhang <[email protected]>
>
> compiler warning:
>
> ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
> ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 2703 | btrfs_setup_sprout(fs_info, seed_devices);
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
> ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> 70 | (__if_trace.miss_hit[1]++,1) : \
> | ^
> ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
> 1878 | u64 right_gen;
> | ^~~~~~~~~
>
> Initialize the uninitialized variables.
>
> Reported-by: k2ci <[email protected]>
> Signed-off-by: Genjian Zhang <[email protected]>

The warnings are still reported by other build reports so I'll apply
this patch. If you have found more please send a patch or I can update
this one once applied. Thanks.

2023-04-23 09:57:04

by Genjian

[permalink] [raw]
Subject: Re: [PATCH] btrfs: fix uninitialized variable warning

On Fri, Apr 7, 2023 at 3:12 AM David Sterba <[email protected]> wrote:
>
> On Fri, Mar 24, 2023 at 10:08:38AM +0800, Genjian wrote:
> > From: Genjian Zhang <[email protected]>
> >
> > compiler warning:
> >
> > ../fs/btrfs/volumes.c: In function ‘btrfs_init_new_device’:
> > ../fs/btrfs/volumes.c:2703:3: error: ‘seed_devices’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > 2703 | btrfs_setup_sprout(fs_info, seed_devices);
> > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >
> > ../fs/btrfs/send.c: In function ‘get_cur_inode_state’:
> > ../include/linux/compiler.h:70:32: error: ‘right_gen’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > 70 | (__if_trace.miss_hit[1]++,1) : \
> > | ^
> > ../fs/btrfs/send.c:1878:6: note: ‘right_gen’ was declared here
> > 1878 | u64 right_gen;
> > | ^~~~~~~~~
> >
> > Initialize the uninitialized variables.
> >
> > Reported-by: k2ci <[email protected]>
> > Signed-off-by: Genjian Zhang <[email protected]>
>
> The warnings are still reported by other build reports so I'll apply
> this patch. If you have found more please send a patch or I can update
> this one once applied. Thanks.

Sorry for the late reply.
At present, only this one has been found.
Thanks.