Patch "btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c" has been added to the 5.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c

to the 5.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     btrfs-fix-some-wmaybe-uninitialized-warnings-in-ioct.patch
and it can be found in the queue-5.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 4b16877e221cc4c3f1dc55966ad9aab2e0e670f8
Author: Josef Bacik <josef@xxxxxxxxxxxxxx>
Date:   Tue Sep 26 15:47:27 2023 -0400

    btrfs: fix some -Wmaybe-uninitialized warnings in ioctl.c
    
    [ Upstream commit 9147b9ded499d9853bdf0e9804b7eaa99c4429ed ]
    
    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: Jens Axboe <axboe@xxxxxxxxx>
    Signed-off-by: Josef Bacik <josef@xxxxxxxxxxxxxx>
    Reviewed-by: David Sterba <dsterba@xxxxxxxx>
    Signed-off-by: David Sterba <dsterba@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c
index 1197dfdfebbf6..775245b148bb3 100644
--- a/fs/btrfs/ioctl.c
+++ b/fs/btrfs/ioctl.c
@@ -4143,7 +4143,7 @@ static void get_block_group_info(struct list_head *groups_list,
 static long btrfs_ioctl_space_info(struct btrfs_fs_info *fs_info,
 				   void __user *arg)
 {
-	struct btrfs_ioctl_space_args space_args;
+	struct btrfs_ioctl_space_args space_args = { 0 };
 	struct btrfs_ioctl_space_info space;
 	struct btrfs_ioctl_space_info *dest;
 	struct btrfs_ioctl_space_info *dest_orig;
@@ -5515,7 +5515,7 @@ static int _btrfs_ioctl_send(struct file *file, void __user *argp, bool compat)
 
 	if (compat) {
 #if defined(CONFIG_64BIT) && defined(CONFIG_COMPAT)
-		struct btrfs_ioctl_send_args_32 args32;
+		struct btrfs_ioctl_send_args_32 args32 = { 0 };
 
 		ret = copy_from_user(&args32, argp, sizeof(args32));
 		if (ret)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux