btrfs: fix uninitialized variable warnings
authorGenjian Zhang <zhanggenjian@kylinos.cn>
Fri, 24 Mar 2023 02:08:38 +0000 (10:08 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 30 Apr 2023 23:26:27 +0000 (08:26 +0900)
commit 8ba7d5f5ba931be68a94b8c91bcced1622934e7a upstream.

There are some warnings on older compilers (gcc 10, 7) or non-x86_64
architectures (aarch64).  As btrfs wants to enable -Wmaybe-uninitialized
by default, fix the warnings even though it's not necessary on recent
compilers (gcc 12+).

../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;
      |      ^~~~~~~~~

Reported-by: k2ci <kernel-bot@kylinos.cn>
Signed-off-by: Genjian Zhang <zhanggenjian@kylinos.cn>
Reviewed-by: David Sterba <dsterba@suse.com>
[ update changelog ]
Signed-off-by: David Sterba <dsterba@suse.com>
Cc: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/btrfs/send.c
fs/btrfs/volumes.c

index 937b60a..35e889f 100644 (file)
@@ -1658,7 +1658,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);
index 67b2aa5..099af8b 100644 (file)
@@ -2631,7 +2631,7 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
        struct super_block *sb = fs_info->sb;
        struct rcu_string *name;
        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;