• Josef Bacik's avatar
    btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c · 9147b9de
    Josef Bacik authored
    
    
    Jens reported the following warnings from -Wmaybe-uninitialized recent
    Linus' branch.
    
      In file included from ./include/asm-generic/rwonce.h:26,
    		   from ./arch/arm64/include/asm/rwonce.h:71,
    		   from ./include/linux/compiler.h:246,
    		   from ./include/linux/export.h:5,
    		   from ./include/linux/linkage.h:7,
    		   from ./include/linux/kernel.h:17,
    		   from fs/btrfs/ioctl.c:6:
      In function ‘instrument_copy_from_user_before’,
          inlined from ‘_copy_from_user’ at ./include/linux/uaccess.h:148:3,
          inlined from ‘copy_from_user’ at ./include/linux/uaccess.h:183:7,
          inlined from ‘btrfs_ioctl_space_info’ at fs/btrfs/ioctl.c:2999:6,
          inlined from ‘btrfs_ioctl’ at fs/btrfs/ioctl.c:4616:10:
      ./include/linux/kasan-checks.h:38:27: warning: ‘space_args’ may be used
      uninitialized [-Wmaybe-uninitialized]
         38 | #define kasan_check_write __kasan_check_write
      ./include/linux/instrumented.h:129:9: note: in expansion of macro
      ‘kasan_check_write’
        129 |         kasan_check_write(to, n);
    	|         ^~~~~~~~~~~~~~~~~
      ./include/linux/kasan-checks.h: In function ‘btrfs_ioctl’:
      ./include/linux/kasan-checks.h:20:6: note: by argument 1 of type ‘const
      volatile void *’ to ‘__kasan_check_write’ declared here
         20 | bool __kasan_check_write(const volatile void *p, unsigned int
    	size);
    	|      ^~~~~~~~~~~~~~~~~~~
      fs/btrfs/ioctl.c:2981:39: note: ‘space_args’ declared here
       2981 |         struct btrfs_ioctl_space_args space_args;
    	|                                       ^~~~~~~~~~
      In function ‘instrument_copy_from_user_before’,
          inlined from ‘_copy_from_user’ at ./include/linux/uaccess.h:148:3,
          inlined from ‘copy_from_user’ at ./include/linux/uaccess.h:183:7,
          inlined from ‘_btrfs_ioctl_send’ at fs/btrfs/ioctl.c:4343:9,
          inlined from ‘btrfs_ioctl’ at fs/btrfs/ioctl.c:4658:10:
      ./include/linux/kasan-checks.h:38:27: warning: ‘args32’ may be used
      uninitialized [-Wmaybe-uninitialized]
         38 | #define kasan_check_write __kasan_check_write
      ./include/linux/instrumented.h:129:9: note: in expansion of macro
      ‘kasan_check_write’
        129 |         kasan_check_write(to, n);
    	|         ^~~~~~~~~~~~~~~~~
      ./include/linux/kasan-checks.h: In function ‘btrfs_ioctl’:
      ./include/linux/kasan-checks.h:20:6: note: by argument 1 of type ‘const
      volatile void *’ to ‘__kasan_check_write’ declared here
         20 | bool __kasan_check_write(const volatile void *p, unsigned int
    	size);
    	|      ^~~~~~~~~~~~~~~~~~~
      fs/btrfs/ioctl.c:4341:49: note: ‘args32’ declared here
       4341 |                 struct btrfs_ioctl_send_args_32 args32;
    	|                                                 ^~~~~~
    
    This was due to his config options and having KASAN turned on,
    which adds some extra checks around copy_from_user(), which then
    triggered the -Wmaybe-uninitialized checker for these cases.
    
    Fix the warnings by initializing the different structs we're copying
    into.
    Reported-by: default avatarJens Axboe <axboe@kernel.dk>
    Signed-off-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    9147b9de
ioctl.c 116 KB