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 |
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 --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;
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(-)