diff mbox series

btrfs: shut up bogus -Wmaybe-uninitialized warning

Message ID 20190617110738.2085060-1-arnd@arndb.de (mailing list archive)
State New, archived
Headers show
Series btrfs: shut up bogus -Wmaybe-uninitialized warning | expand

Commit Message

Arnd Bergmann June 17, 2019, 11:07 a.m. UTC
gcc sometimes can't determine whether a variable has been initialized
when both the initialization and the use are conditional:

fs/btrfs/props.c: In function 'inherit_props':
fs/btrfs/props.c:389:4: error: 'num_bytes' may be used uninitialized in this function [-Werror=maybe-uninitialized]
    btrfs_block_rsv_release(fs_info, trans->block_rsv,

This code is fine. Unfortunately, I cannot think of a good way to
rephrase it in a way that makes gcc understand this, so I add
a bogus initialization the way one should not.

Fixes: d7400ee1b476 ("btrfs: use the existing reserved items for our first prop for inheritance")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 fs/btrfs/props.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

David Sterba June 17, 2019, 12:32 p.m. UTC | #1
On Mon, Jun 17, 2019 at 01:07:28PM +0200, Arnd Bergmann wrote:
> gcc sometimes can't determine whether a variable has been initialized
> when both the initialization and the use are conditional:
> 
> fs/btrfs/props.c: In function 'inherit_props':
> fs/btrfs/props.c:389:4: error: 'num_bytes' may be used uninitialized in this function [-Werror=maybe-uninitialized]
>     btrfs_block_rsv_release(fs_info, trans->block_rsv,
> 
> This code is fine. Unfortunately, I cannot think of a good way to
> rephrase it in a way that makes gcc understand this, so I add
> a bogus initialization the way one should not.

Looks ok, patch added to devel queue, thanks.
> 
> Fixes: d7400ee1b476 ("btrfs: use the existing reserved items for our first prop for inheritance")

I'd rather not add the Fixes tag here as it's just a compilation warning
for some old unknown version of gcc. I've checked that 8.3.1 and 9.1.1
don't print the warning and I consider any other version to be up to the
user of such environment to apply fixups as needed, but not to let the
stable machinery pick it up.
diff mbox series

Patch

diff --git a/fs/btrfs/props.c b/fs/btrfs/props.c
index a9e2e66152ee..9d47ae1cf5b2 100644
--- a/fs/btrfs/props.c
+++ b/fs/btrfs/props.c
@@ -341,7 +341,7 @@  static int inherit_props(struct btrfs_trans_handle *trans,
 	for (i = 0; i < ARRAY_SIZE(prop_handlers); i++) {
 		const struct prop_handler *h = &prop_handlers[i];
 		const char *value;
-		u64 num_bytes;
+		u64 num_bytes = 0;
 
 		if (!h->inheritable)
 			continue;