Re: [PATCH] btrfs: pass checksum type via BTRFS_IOC_FS_INFO ioctl

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

 



Hi Johannes,

I love your patch! Perhaps something to improve:

[auto build test WARNING on kdave/for-next]
[also build test WARNING on v5.8-rc2 next-20200624]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use  as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Johannes-Thumshirn/btrfs-pass-checksum-type-via-BTRFS_IOC_FS_INFO-ioctl/20200624-182429
base:   https://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git for-next
config: x86_64-randconfig-s021-20200624 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.2-dirty
        # save the attached .config to linux build tree
        make W=1 C=1 ARCH=x86_64 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>


sparse warnings: (new ones prefixed by >>)

   fs/btrfs/ioctl.c:1715:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
   fs/btrfs/ioctl.c:1715:17: sparse:    struct rcu_string [noderef] <asn:4> *
   fs/btrfs/ioctl.c:1715:17: sparse:    struct rcu_string *
>> fs/btrfs/ioctl.c:3221:25: sparse: sparse: cast to restricted __le16
   fs/btrfs/ioctl.c:3260:40: sparse: sparse: incompatible types in comparison expression (different address spaces):
   fs/btrfs/ioctl.c:3260:40: sparse:    struct rcu_string [noderef] <asn:4> *
   fs/btrfs/ioctl.c:3260:40: sparse:    struct rcu_string *

vim +3221 fs/btrfs/ioctl.c

  3194	
  3195	static long btrfs_ioctl_fs_info(struct btrfs_fs_info *fs_info,
  3196					void __user *arg)
  3197	{
  3198		struct btrfs_ioctl_fs_info_args *fi_args;
  3199		struct btrfs_device *device;
  3200		struct btrfs_fs_devices *fs_devices = fs_info->fs_devices;
  3201		int ret = 0;
  3202	
  3203		fi_args = kzalloc(sizeof(*fi_args), GFP_KERNEL);
  3204		if (!fi_args)
  3205			return -ENOMEM;
  3206	
  3207		rcu_read_lock();
  3208		fi_args->num_devices = fs_devices->num_devices;
  3209	
  3210		list_for_each_entry_rcu(device, &fs_devices->devices, dev_list) {
  3211			if (device->devid > fi_args->max_id)
  3212				fi_args->max_id = device->devid;
  3213		}
  3214		rcu_read_unlock();
  3215	
  3216		memcpy(&fi_args->fsid, fs_devices->fsid, sizeof(fi_args->fsid));
  3217		fi_args->nodesize = fs_info->nodesize;
  3218		fi_args->sectorsize = fs_info->sectorsize;
  3219		fi_args->clone_alignment = fs_info->sectorsize;
  3220		fi_args->csum_type =
> 3221				le16_to_cpu(btrfs_super_csum_type(fs_info->super_copy));
  3222		fi_args->flags |= BTRFS_FS_INFO_FLAG_CSUM_TYPE;
  3223	
  3224		if (copy_to_user(arg, fi_args, sizeof(*fi_args)))
  3225			ret = -EFAULT;
  3226	
  3227		kfree(fi_args);
  3228		return ret;
  3229	}
  3230	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx

Attachment: .config.gz
Description: application/gzip


[Index of Archives]     [Linux Filesystem Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux