All of lore.kernel.org
 help / color / mirror / Atom feed
* [android-common:android-4.19 6/6] fs/incfs/vfs.c:1306:37: sparse: sparse: non size-preserving integer to pointer cast
@ 2021-05-04 14:01 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-05-04 14:01 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 17164 bytes --]

tree:   https://android.googlesource.com/kernel/common android-4.19
head:   99e4db371753bde7471e024dff8d11c8ba946cef
commit: 99e4db371753bde7471e024dff8d11c8ba946cef [6/6] ANDROID: Incremental fs: Remove unneeded compatibility typedef
config: i386-randconfig-s002-20210503 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-341-g8af24329-dirty
        git remote add android-common https://android.googlesource.com/kernel/common
        git fetch --no-tags android-common android-4.19
        git checkout 99e4db371753bde7471e024dff8d11c8ba946cef
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=1 ARCH=i386 

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


sparse warnings: (new ones prefixed by >>)
>> fs/incfs/vfs.c:1306:37: sparse: sparse: non size-preserving integer to pointer cast
   fs/incfs/vfs.c:2053:23: sparse: sparse: cast truncates bits from constant value (5346434e49 becomes 46434e49)
   In file included from fs/incfs/vfs.c:22:
   fs/incfs/data_mgmt.h: In function 'get_incfs_node':
   fs/incfs/data_mgmt.h:263:27: warning: comparison is always true due to limited range of data type [-Wtype-limits]
     263 |  if (inode->i_sb->s_magic != INCFS_MAGIC_NUMBER) {
         |                           ^~
   fs/incfs/vfs.c: In function 'ioctl_create_file':
   fs/incfs/vfs.c:1305:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
    1305 |    (struct incfs_file_signature_info __user *)
         |    ^
   In file included from fs/incfs/vfs.c:19:
   fs/incfs/vfs.c: In function 'incfs_mount_fs':
   include/uapi/linux/incrementalfs.h:21:28: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '357661101641' to '1178816073' [-Woverflow]
      21 | #define INCFS_MAGIC_NUMBER (0x5346434e49ul)
         |                            ^
   fs/incfs/vfs.c:2053:16: note: in expansion of macro 'INCFS_MAGIC_NUMBER'
    2053 |  sb->s_magic = INCFS_MAGIC_NUMBER;
         |                ^~~~~~~~~~~~~~~~~~

vim +1306 fs/incfs/vfs.c

040942fc50b203 Eugene Zemtsov 2019-11-18  1137  
040942fc50b203 Eugene Zemtsov 2019-11-18  1138  static long ioctl_create_file(struct mount_info *mi,
040942fc50b203 Eugene Zemtsov 2019-11-18  1139  			struct incfs_new_file_args __user *usr_args)
040942fc50b203 Eugene Zemtsov 2019-11-18  1140  {
040942fc50b203 Eugene Zemtsov 2019-11-18  1141  	struct incfs_new_file_args args;
040942fc50b203 Eugene Zemtsov 2019-11-18  1142  	char *file_id_str = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1143  	struct dentry *index_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1144  	struct dentry *named_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1145  	struct path parent_dir_path = {};
040942fc50b203 Eugene Zemtsov 2019-11-18  1146  	struct inode *index_dir_inode = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1147  	__le64 size_attr_value = 0;
040942fc50b203 Eugene Zemtsov 2019-11-18  1148  	char *file_name = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1149  	char *attr_value = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1150  	int error = 0;
040942fc50b203 Eugene Zemtsov 2019-11-18  1151  	bool locked = false;
040942fc50b203 Eugene Zemtsov 2019-11-18  1152  
040942fc50b203 Eugene Zemtsov 2019-11-18  1153  	if (!mi || !mi->mi_index_dir) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1154  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1155  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1156  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1157  	if (!access_ok(VERIFY_READ, usr_args, sizeof(args))) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1158  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1159  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1160  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1161  	if (copy_from_user(&args, usr_args, sizeof(args)) > 0) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1162  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1163  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1164  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1165  
040942fc50b203 Eugene Zemtsov 2019-11-18  1166  	file_name = strndup_user(u64_to_user_ptr(args.file_name), PATH_MAX);
040942fc50b203 Eugene Zemtsov 2019-11-18  1167  	if (IS_ERR(file_name)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1168  		error = PTR_ERR(file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1169  		file_name = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1170  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1171  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1172  
040942fc50b203 Eugene Zemtsov 2019-11-18  1173  	error = validate_name(file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1174  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1175  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1176  
040942fc50b203 Eugene Zemtsov 2019-11-18  1177  	file_id_str = file_id_to_str(args.file_id);
040942fc50b203 Eugene Zemtsov 2019-11-18  1178  	if (!file_id_str) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1179  		error = -ENOMEM;
040942fc50b203 Eugene Zemtsov 2019-11-18  1180  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1181  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1182  
040942fc50b203 Eugene Zemtsov 2019-11-18  1183  	error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
040942fc50b203 Eugene Zemtsov 2019-11-18  1184  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1185  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1186  	locked = true;
040942fc50b203 Eugene Zemtsov 2019-11-18  1187  
040942fc50b203 Eugene Zemtsov 2019-11-18  1188  	/* Find a directory to put the file into. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1189  	error = dir_relative_path_resolve(mi,
040942fc50b203 Eugene Zemtsov 2019-11-18  1190  			u64_to_user_ptr(args.directory_path),
040942fc50b203 Eugene Zemtsov 2019-11-18  1191  			&parent_dir_path);
040942fc50b203 Eugene Zemtsov 2019-11-18  1192  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1193  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1194  
040942fc50b203 Eugene Zemtsov 2019-11-18  1195  	if (parent_dir_path.dentry == mi->mi_index_dir) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1196  		/* Can't create a file directly inside .index */
040942fc50b203 Eugene Zemtsov 2019-11-18  1197  		error = -EBUSY;
040942fc50b203 Eugene Zemtsov 2019-11-18  1198  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1199  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1200  
040942fc50b203 Eugene Zemtsov 2019-11-18  1201  	/* Look up a dentry in the parent dir. It should be negative. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1202  	named_file_dentry = incfs_lookup_dentry(parent_dir_path.dentry,
040942fc50b203 Eugene Zemtsov 2019-11-18  1203  					file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1204  	if (!named_file_dentry) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1205  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1206  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1207  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1208  	if (IS_ERR(named_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1209  		error = PTR_ERR(named_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1210  		named_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1211  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1212  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1213  	if (d_really_is_positive(named_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1214  		/* File with this path already exists. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1215  		error = -EEXIST;
040942fc50b203 Eugene Zemtsov 2019-11-18  1216  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1217  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1218  	/* Look up a dentry in the .index dir. It should be negative. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1219  	index_file_dentry = incfs_lookup_dentry(mi->mi_index_dir, file_id_str);
040942fc50b203 Eugene Zemtsov 2019-11-18  1220  	if (!index_file_dentry) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1221  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1222  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1223  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1224  	if (IS_ERR(index_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1225  		error = PTR_ERR(index_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1226  		index_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1227  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1228  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1229  	if (d_really_is_positive(index_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1230  		/* File with this ID already exists in index. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1231  		error = -EEXIST;
040942fc50b203 Eugene Zemtsov 2019-11-18  1232  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1233  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1234  
040942fc50b203 Eugene Zemtsov 2019-11-18  1235  	/* Creating a file in the .index dir. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1236  	index_dir_inode = d_inode(mi->mi_index_dir);
040942fc50b203 Eugene Zemtsov 2019-11-18  1237  	inode_lock_nested(index_dir_inode, I_MUTEX_PARENT);
040942fc50b203 Eugene Zemtsov 2019-11-18  1238  	error = vfs_create(index_dir_inode, index_file_dentry,
040942fc50b203 Eugene Zemtsov 2019-11-18  1239  			args.mode, true);
040942fc50b203 Eugene Zemtsov 2019-11-18  1240  	inode_unlock(index_dir_inode);
040942fc50b203 Eugene Zemtsov 2019-11-18  1241  
040942fc50b203 Eugene Zemtsov 2019-11-18  1242  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1243  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1244  	if (!d_really_is_positive(index_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1245  		error = -EINVAL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1246  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1247  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1248  
040942fc50b203 Eugene Zemtsov 2019-11-18  1249  	/* Save the file's ID as an xattr for easy fetching in future. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1250  	error = vfs_setxattr(index_file_dentry, INCFS_XATTR_ID_NAME,
040942fc50b203 Eugene Zemtsov 2019-11-18  1251  		file_id_str, strlen(file_id_str), XATTR_CREATE);
040942fc50b203 Eugene Zemtsov 2019-11-18  1252  	if (error) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1253  		pr_debug("incfs: vfs_setxattr err:%d\n", error);
040942fc50b203 Eugene Zemtsov 2019-11-18  1254  		goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1255  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1256  
040942fc50b203 Eugene Zemtsov 2019-11-18  1257  	/* Save the file's size as an xattr for easy fetching in future. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1258  	size_attr_value = cpu_to_le64(args.size);
040942fc50b203 Eugene Zemtsov 2019-11-18  1259  	error = vfs_setxattr(index_file_dentry, INCFS_XATTR_SIZE_NAME,
040942fc50b203 Eugene Zemtsov 2019-11-18  1260  		(char *)&size_attr_value, sizeof(size_attr_value),
040942fc50b203 Eugene Zemtsov 2019-11-18  1261  		XATTR_CREATE);
040942fc50b203 Eugene Zemtsov 2019-11-18  1262  	if (error) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1263  		pr_debug("incfs: vfs_setxattr err:%d\n", error);
040942fc50b203 Eugene Zemtsov 2019-11-18  1264  		goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1265  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1266  
040942fc50b203 Eugene Zemtsov 2019-11-18  1267  	/* Save the file's attrubute as an xattr */
040942fc50b203 Eugene Zemtsov 2019-11-18  1268  	if (args.file_attr_len && args.file_attr) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1269  		if (args.file_attr_len > INCFS_MAX_FILE_ATTR_SIZE) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1270  			error = -E2BIG;
040942fc50b203 Eugene Zemtsov 2019-11-18  1271  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1272  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1273  
040942fc50b203 Eugene Zemtsov 2019-11-18  1274  		attr_value = kmalloc(args.file_attr_len, GFP_NOFS);
040942fc50b203 Eugene Zemtsov 2019-11-18  1275  		if (!attr_value) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1276  			error = -ENOMEM;
040942fc50b203 Eugene Zemtsov 2019-11-18  1277  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1278  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1279  
040942fc50b203 Eugene Zemtsov 2019-11-18  1280  		if (!access_ok(VERIFY_READ, u64_to_user_ptr(args.file_attr),
040942fc50b203 Eugene Zemtsov 2019-11-18  1281  			       args.file_attr_len)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1282  			error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1283  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1284  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1285  
040942fc50b203 Eugene Zemtsov 2019-11-18  1286  		if (copy_from_user(attr_value,
040942fc50b203 Eugene Zemtsov 2019-11-18  1287  				u64_to_user_ptr(args.file_attr),
040942fc50b203 Eugene Zemtsov 2019-11-18  1288  				args.file_attr_len) > 0) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1289  			error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1290  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1291  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1292  
040942fc50b203 Eugene Zemtsov 2019-11-18  1293  		error = vfs_setxattr(index_file_dentry,
040942fc50b203 Eugene Zemtsov 2019-11-18  1294  				INCFS_XATTR_METADATA_NAME,
040942fc50b203 Eugene Zemtsov 2019-11-18  1295  				attr_value, args.file_attr_len,
040942fc50b203 Eugene Zemtsov 2019-11-18  1296  				XATTR_CREATE);
040942fc50b203 Eugene Zemtsov 2019-11-18  1297  
040942fc50b203 Eugene Zemtsov 2019-11-18  1298  		if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1299  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1300  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1301  
040942fc50b203 Eugene Zemtsov 2019-11-18  1302  	/* Initializing a newly created file. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1303  	error = init_new_file(mi, index_file_dentry, &args.file_id, args.size,
040942fc50b203 Eugene Zemtsov 2019-11-18  1304  			range(attr_value, args.file_attr_len),
040942fc50b203 Eugene Zemtsov 2019-11-18  1305  			(struct incfs_file_signature_info __user *)
040942fc50b203 Eugene Zemtsov 2019-11-18 @1306  				args.signature_info);
040942fc50b203 Eugene Zemtsov 2019-11-18  1307  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1308  		goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1309  
040942fc50b203 Eugene Zemtsov 2019-11-18  1310  	/* Linking a file with it's real name from the requested dir. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1311  	error = incfs_link(index_file_dentry, named_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1312  
040942fc50b203 Eugene Zemtsov 2019-11-18  1313  	if (!error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1314  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1315  
040942fc50b203 Eugene Zemtsov 2019-11-18  1316  delete_index_file:
040942fc50b203 Eugene Zemtsov 2019-11-18  1317  	incfs_unlink(index_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1318  
040942fc50b203 Eugene Zemtsov 2019-11-18  1319  out:
040942fc50b203 Eugene Zemtsov 2019-11-18  1320  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1321  		pr_debug("incfs: %s err:%d\n", __func__, error);
040942fc50b203 Eugene Zemtsov 2019-11-18  1322  
040942fc50b203 Eugene Zemtsov 2019-11-18  1323  	kfree(file_id_str);
040942fc50b203 Eugene Zemtsov 2019-11-18  1324  	kfree(file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1325  	kfree(attr_value);
040942fc50b203 Eugene Zemtsov 2019-11-18  1326  	dput(named_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1327  	dput(index_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1328  	path_put(&parent_dir_path);
040942fc50b203 Eugene Zemtsov 2019-11-18  1329  	if (locked)
040942fc50b203 Eugene Zemtsov 2019-11-18  1330  		mutex_unlock(&mi->mi_dir_struct_mutex);
040942fc50b203 Eugene Zemtsov 2019-11-18  1331  	return error;
040942fc50b203 Eugene Zemtsov 2019-11-18  1332  }
040942fc50b203 Eugene Zemtsov 2019-11-18  1333  

:::::: The code at line 1306 was first introduced by commit
:::::: 040942fc50b20325bb56737c32b303268bb6f35c ANDROID: Initial commit of Incremental FS

:::::: TO: Eugene Zemtsov <ezemtsov@google.com>
:::::: CC: Paul Lawrence <paullawrence@google.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33927 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [android-common:android-4.19 6/6] fs/incfs/vfs.c:1306:37: sparse: sparse: non size-preserving integer to pointer cast
@ 2021-03-02 22:41 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-03-02 22:41 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 16839 bytes --]

tree:   https://android.googlesource.com/kernel/common android-4.19
head:   99e4db371753bde7471e024dff8d11c8ba946cef
commit: 99e4db371753bde7471e024dff8d11c8ba946cef [6/6] ANDROID: Incremental fs: Remove unneeded compatibility typedef
config: i386-randconfig-s032-20210303 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-241-geaceeafa-dirty
        git remote add android-common https://android.googlesource.com/kernel/common
        git fetch --no-tags android-common android-4.19
        git checkout 99e4db371753bde7471e024dff8d11c8ba946cef
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

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


"sparse warnings: (new ones prefixed by >>)"
>> fs/incfs/vfs.c:1306:37: sparse: sparse: non size-preserving integer to pointer cast
   fs/incfs/vfs.c:2053:23: sparse: sparse: cast truncates bits from constant value (5346434e49 becomes 46434e49)
   fs/incfs/vfs.c: In function 'ioctl_create_file':
   fs/incfs/vfs.c:1305:4: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
    1305 |    (struct incfs_file_signature_info __user *)
         |    ^
   In file included from fs/incfs/vfs.c:19:
   fs/incfs/vfs.c: In function 'incfs_mount_fs':
   include/uapi/linux/incrementalfs.h:21:28: warning: conversion from 'long long unsigned int' to 'long unsigned int' changes value from '357661101641' to '1178816073' [-Woverflow]
      21 | #define INCFS_MAGIC_NUMBER (0x5346434e49ul)
         |                            ^
   fs/incfs/vfs.c:2053:16: note: in expansion of macro 'INCFS_MAGIC_NUMBER'
    2053 |  sb->s_magic = INCFS_MAGIC_NUMBER;
         |                ^~~~~~~~~~~~~~~~~~

vim +1306 fs/incfs/vfs.c

040942fc50b203 Eugene Zemtsov 2019-11-18  1137  
040942fc50b203 Eugene Zemtsov 2019-11-18  1138  static long ioctl_create_file(struct mount_info *mi,
040942fc50b203 Eugene Zemtsov 2019-11-18  1139  			struct incfs_new_file_args __user *usr_args)
040942fc50b203 Eugene Zemtsov 2019-11-18  1140  {
040942fc50b203 Eugene Zemtsov 2019-11-18  1141  	struct incfs_new_file_args args;
040942fc50b203 Eugene Zemtsov 2019-11-18  1142  	char *file_id_str = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1143  	struct dentry *index_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1144  	struct dentry *named_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1145  	struct path parent_dir_path = {};
040942fc50b203 Eugene Zemtsov 2019-11-18  1146  	struct inode *index_dir_inode = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1147  	__le64 size_attr_value = 0;
040942fc50b203 Eugene Zemtsov 2019-11-18  1148  	char *file_name = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1149  	char *attr_value = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1150  	int error = 0;
040942fc50b203 Eugene Zemtsov 2019-11-18  1151  	bool locked = false;
040942fc50b203 Eugene Zemtsov 2019-11-18  1152  
040942fc50b203 Eugene Zemtsov 2019-11-18  1153  	if (!mi || !mi->mi_index_dir) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1154  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1155  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1156  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1157  	if (!access_ok(VERIFY_READ, usr_args, sizeof(args))) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1158  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1159  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1160  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1161  	if (copy_from_user(&args, usr_args, sizeof(args)) > 0) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1162  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1163  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1164  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1165  
040942fc50b203 Eugene Zemtsov 2019-11-18  1166  	file_name = strndup_user(u64_to_user_ptr(args.file_name), PATH_MAX);
040942fc50b203 Eugene Zemtsov 2019-11-18  1167  	if (IS_ERR(file_name)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1168  		error = PTR_ERR(file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1169  		file_name = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1170  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1171  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1172  
040942fc50b203 Eugene Zemtsov 2019-11-18  1173  	error = validate_name(file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1174  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1175  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1176  
040942fc50b203 Eugene Zemtsov 2019-11-18  1177  	file_id_str = file_id_to_str(args.file_id);
040942fc50b203 Eugene Zemtsov 2019-11-18  1178  	if (!file_id_str) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1179  		error = -ENOMEM;
040942fc50b203 Eugene Zemtsov 2019-11-18  1180  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1181  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1182  
040942fc50b203 Eugene Zemtsov 2019-11-18  1183  	error = mutex_lock_interruptible(&mi->mi_dir_struct_mutex);
040942fc50b203 Eugene Zemtsov 2019-11-18  1184  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1185  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1186  	locked = true;
040942fc50b203 Eugene Zemtsov 2019-11-18  1187  
040942fc50b203 Eugene Zemtsov 2019-11-18  1188  	/* Find a directory to put the file into. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1189  	error = dir_relative_path_resolve(mi,
040942fc50b203 Eugene Zemtsov 2019-11-18  1190  			u64_to_user_ptr(args.directory_path),
040942fc50b203 Eugene Zemtsov 2019-11-18  1191  			&parent_dir_path);
040942fc50b203 Eugene Zemtsov 2019-11-18  1192  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1193  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1194  
040942fc50b203 Eugene Zemtsov 2019-11-18  1195  	if (parent_dir_path.dentry == mi->mi_index_dir) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1196  		/* Can't create a file directly inside .index */
040942fc50b203 Eugene Zemtsov 2019-11-18  1197  		error = -EBUSY;
040942fc50b203 Eugene Zemtsov 2019-11-18  1198  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1199  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1200  
040942fc50b203 Eugene Zemtsov 2019-11-18  1201  	/* Look up a dentry in the parent dir. It should be negative. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1202  	named_file_dentry = incfs_lookup_dentry(parent_dir_path.dentry,
040942fc50b203 Eugene Zemtsov 2019-11-18  1203  					file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1204  	if (!named_file_dentry) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1205  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1206  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1207  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1208  	if (IS_ERR(named_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1209  		error = PTR_ERR(named_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1210  		named_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1211  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1212  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1213  	if (d_really_is_positive(named_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1214  		/* File with this path already exists. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1215  		error = -EEXIST;
040942fc50b203 Eugene Zemtsov 2019-11-18  1216  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1217  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1218  	/* Look up a dentry in the .index dir. It should be negative. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1219  	index_file_dentry = incfs_lookup_dentry(mi->mi_index_dir, file_id_str);
040942fc50b203 Eugene Zemtsov 2019-11-18  1220  	if (!index_file_dentry) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1221  		error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1222  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1223  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1224  	if (IS_ERR(index_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1225  		error = PTR_ERR(index_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1226  		index_file_dentry = NULL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1227  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1228  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1229  	if (d_really_is_positive(index_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1230  		/* File with this ID already exists in index. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1231  		error = -EEXIST;
040942fc50b203 Eugene Zemtsov 2019-11-18  1232  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1233  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1234  
040942fc50b203 Eugene Zemtsov 2019-11-18  1235  	/* Creating a file in the .index dir. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1236  	index_dir_inode = d_inode(mi->mi_index_dir);
040942fc50b203 Eugene Zemtsov 2019-11-18  1237  	inode_lock_nested(index_dir_inode, I_MUTEX_PARENT);
040942fc50b203 Eugene Zemtsov 2019-11-18  1238  	error = vfs_create(index_dir_inode, index_file_dentry,
040942fc50b203 Eugene Zemtsov 2019-11-18  1239  			args.mode, true);
040942fc50b203 Eugene Zemtsov 2019-11-18  1240  	inode_unlock(index_dir_inode);
040942fc50b203 Eugene Zemtsov 2019-11-18  1241  
040942fc50b203 Eugene Zemtsov 2019-11-18  1242  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1243  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1244  	if (!d_really_is_positive(index_file_dentry)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1245  		error = -EINVAL;
040942fc50b203 Eugene Zemtsov 2019-11-18  1246  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1247  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1248  
040942fc50b203 Eugene Zemtsov 2019-11-18  1249  	/* Save the file's ID as an xattr for easy fetching in future. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1250  	error = vfs_setxattr(index_file_dentry, INCFS_XATTR_ID_NAME,
040942fc50b203 Eugene Zemtsov 2019-11-18  1251  		file_id_str, strlen(file_id_str), XATTR_CREATE);
040942fc50b203 Eugene Zemtsov 2019-11-18  1252  	if (error) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1253  		pr_debug("incfs: vfs_setxattr err:%d\n", error);
040942fc50b203 Eugene Zemtsov 2019-11-18  1254  		goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1255  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1256  
040942fc50b203 Eugene Zemtsov 2019-11-18  1257  	/* Save the file's size as an xattr for easy fetching in future. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1258  	size_attr_value = cpu_to_le64(args.size);
040942fc50b203 Eugene Zemtsov 2019-11-18  1259  	error = vfs_setxattr(index_file_dentry, INCFS_XATTR_SIZE_NAME,
040942fc50b203 Eugene Zemtsov 2019-11-18  1260  		(char *)&size_attr_value, sizeof(size_attr_value),
040942fc50b203 Eugene Zemtsov 2019-11-18  1261  		XATTR_CREATE);
040942fc50b203 Eugene Zemtsov 2019-11-18  1262  	if (error) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1263  		pr_debug("incfs: vfs_setxattr err:%d\n", error);
040942fc50b203 Eugene Zemtsov 2019-11-18  1264  		goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1265  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1266  
040942fc50b203 Eugene Zemtsov 2019-11-18  1267  	/* Save the file's attrubute as an xattr */
040942fc50b203 Eugene Zemtsov 2019-11-18  1268  	if (args.file_attr_len && args.file_attr) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1269  		if (args.file_attr_len > INCFS_MAX_FILE_ATTR_SIZE) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1270  			error = -E2BIG;
040942fc50b203 Eugene Zemtsov 2019-11-18  1271  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1272  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1273  
040942fc50b203 Eugene Zemtsov 2019-11-18  1274  		attr_value = kmalloc(args.file_attr_len, GFP_NOFS);
040942fc50b203 Eugene Zemtsov 2019-11-18  1275  		if (!attr_value) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1276  			error = -ENOMEM;
040942fc50b203 Eugene Zemtsov 2019-11-18  1277  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1278  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1279  
040942fc50b203 Eugene Zemtsov 2019-11-18  1280  		if (!access_ok(VERIFY_READ, u64_to_user_ptr(args.file_attr),
040942fc50b203 Eugene Zemtsov 2019-11-18  1281  			       args.file_attr_len)) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1282  			error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1283  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1284  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1285  
040942fc50b203 Eugene Zemtsov 2019-11-18  1286  		if (copy_from_user(attr_value,
040942fc50b203 Eugene Zemtsov 2019-11-18  1287  				u64_to_user_ptr(args.file_attr),
040942fc50b203 Eugene Zemtsov 2019-11-18  1288  				args.file_attr_len) > 0) {
040942fc50b203 Eugene Zemtsov 2019-11-18  1289  			error = -EFAULT;
040942fc50b203 Eugene Zemtsov 2019-11-18  1290  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1291  		}
040942fc50b203 Eugene Zemtsov 2019-11-18  1292  
040942fc50b203 Eugene Zemtsov 2019-11-18  1293  		error = vfs_setxattr(index_file_dentry,
040942fc50b203 Eugene Zemtsov 2019-11-18  1294  				INCFS_XATTR_METADATA_NAME,
040942fc50b203 Eugene Zemtsov 2019-11-18  1295  				attr_value, args.file_attr_len,
040942fc50b203 Eugene Zemtsov 2019-11-18  1296  				XATTR_CREATE);
040942fc50b203 Eugene Zemtsov 2019-11-18  1297  
040942fc50b203 Eugene Zemtsov 2019-11-18  1298  		if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1299  			goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1300  	}
040942fc50b203 Eugene Zemtsov 2019-11-18  1301  
040942fc50b203 Eugene Zemtsov 2019-11-18  1302  	/* Initializing a newly created file. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1303  	error = init_new_file(mi, index_file_dentry, &args.file_id, args.size,
040942fc50b203 Eugene Zemtsov 2019-11-18  1304  			range(attr_value, args.file_attr_len),
040942fc50b203 Eugene Zemtsov 2019-11-18  1305  			(struct incfs_file_signature_info __user *)
040942fc50b203 Eugene Zemtsov 2019-11-18 @1306  				args.signature_info);
040942fc50b203 Eugene Zemtsov 2019-11-18  1307  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1308  		goto delete_index_file;
040942fc50b203 Eugene Zemtsov 2019-11-18  1309  
040942fc50b203 Eugene Zemtsov 2019-11-18  1310  	/* Linking a file with it's real name from the requested dir. */
040942fc50b203 Eugene Zemtsov 2019-11-18  1311  	error = incfs_link(index_file_dentry, named_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1312  
040942fc50b203 Eugene Zemtsov 2019-11-18  1313  	if (!error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1314  		goto out;
040942fc50b203 Eugene Zemtsov 2019-11-18  1315  
040942fc50b203 Eugene Zemtsov 2019-11-18  1316  delete_index_file:
040942fc50b203 Eugene Zemtsov 2019-11-18  1317  	incfs_unlink(index_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1318  
040942fc50b203 Eugene Zemtsov 2019-11-18  1319  out:
040942fc50b203 Eugene Zemtsov 2019-11-18  1320  	if (error)
040942fc50b203 Eugene Zemtsov 2019-11-18  1321  		pr_debug("incfs: %s err:%d\n", __func__, error);
040942fc50b203 Eugene Zemtsov 2019-11-18  1322  
040942fc50b203 Eugene Zemtsov 2019-11-18  1323  	kfree(file_id_str);
040942fc50b203 Eugene Zemtsov 2019-11-18  1324  	kfree(file_name);
040942fc50b203 Eugene Zemtsov 2019-11-18  1325  	kfree(attr_value);
040942fc50b203 Eugene Zemtsov 2019-11-18  1326  	dput(named_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1327  	dput(index_file_dentry);
040942fc50b203 Eugene Zemtsov 2019-11-18  1328  	path_put(&parent_dir_path);
040942fc50b203 Eugene Zemtsov 2019-11-18  1329  	if (locked)
040942fc50b203 Eugene Zemtsov 2019-11-18  1330  		mutex_unlock(&mi->mi_dir_struct_mutex);
040942fc50b203 Eugene Zemtsov 2019-11-18  1331  	return error;
040942fc50b203 Eugene Zemtsov 2019-11-18  1332  }
040942fc50b203 Eugene Zemtsov 2019-11-18  1333  

:::::: The code at line 1306 was first introduced by commit
:::::: 040942fc50b20325bb56737c32b303268bb6f35c ANDROID: Initial commit of Incremental FS

:::::: TO: Eugene Zemtsov <ezemtsov@google.com>
:::::: CC: Paul Lawrence <paullawrence@google.com>

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

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 29642 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-05-04 14:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-04 14:01 [android-common:android-4.19 6/6] fs/incfs/vfs.c:1306:37: sparse: sparse: non size-preserving integer to pointer cast kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2021-03-02 22:41 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.