* [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.