tree:
https://android.googlesource.com/kernel/common android-mainline-tracking
head: 74f61c888eeeb9cbc57d44c61fafe32df9b3da51
commit: 89ffdf7c41d70eb8163de7ae21560fdc541240da [363/836] ANDROID: Incremental fs: Make
files writeable
config: x86_64-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
git remote add android-common
https://android.googlesource.com/kernel/common
git fetch --no-tags android-common android-mainline-tracking
git checkout 89ffdf7c41d70eb8163de7ae21560fdc541240da
# save the attached .config to linux build tree
make W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
Note: the android-common/android-mainline-tracking HEAD
74f61c888eeeb9cbc57d44c61fafe32df9b3da51 builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1779:5: note: declared here
1779 | int vfs_link(struct dentry *, struct user_namespace *, struct inode *,
| ^~~~~~~~
fs/incfs/vfs.c: In function 'incfs_unlink':
fs/incfs/vfs.c:1063:21: error: passing argument 1 of 'vfs_unlink' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1063 | error = vfs_unlink(pinode, dentry, NULL);
| ^~~~~~
| |
| struct inode *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1782:16: note: expected 'struct user_namespace *' but
argument is of type 'struct inode *'
1782 | int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:1063:29: error: passing argument 2 of 'vfs_unlink' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1063 | error = vfs_unlink(pinode, dentry, NULL);
| ^~~~~~
| |
| struct dentry *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1782:41: note: expected 'struct inode *' but argument is of
type 'struct dentry *'
1782 | int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
| ^~~~~~~~~~~~~~
fs/incfs/vfs.c:1063:10: error: too few arguments to function 'vfs_unlink'
1063 | error = vfs_unlink(pinode, dentry, NULL);
| ^~~~~~~~~~
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1782:5: note: declared here
1782 | int vfs_unlink(struct user_namespace *, struct inode *, struct dentry *,
| ^~~~~~~~~~
fs/incfs/vfs.c: In function 'incfs_rmdir':
fs/incfs/vfs.c:1077:20: error: passing argument 1 of 'vfs_rmdir' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1077 | error = vfs_rmdir(pinode, dentry);
| ^~~~~~
| |
| struct inode *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1781:15: note: expected 'struct user_namespace *' but
argument is of type 'struct inode *'
1781 | int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:1077:28: error: passing argument 2 of 'vfs_rmdir' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1077 | error = vfs_rmdir(pinode, dentry);
| ^~~~~~
| |
| struct dentry *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1781:40: note: expected 'struct inode *' but argument is of
type 'struct dentry *'
1781 | int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
| ^~~~~~~~~~~~~~
fs/incfs/vfs.c:1077:10: error: too few arguments to function 'vfs_rmdir'
1077 | error = vfs_rmdir(pinode, dentry);
| ^~~~~~~~~
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1781:5: note: declared here
1781 | int vfs_rmdir(struct user_namespace *, struct inode *, struct dentry *);
| ^~~~~~~~~
fs/incfs/vfs.c: In function 'dir_relative_path_resolve':
fs/incfs/vfs.c:1116:2: error: implicit declaration of function 'ksys_close';
did you mean 'ksys_chown'? [-Werror=implicit-function-declaration]
1116 | ksys_close(dir_fd);
| ^~~~~~~~~~
| ksys_chown
fs/incfs/vfs.c: In function 'chmod':
> fs/incfs/vfs.c:1151:24: error: passing argument 1 of
'notify_change' from incompatible pointer type
[-Werror=incompatible-pointer-types]
1151 | error = notify_change(dentry,
&newattrs, &delegated_inode);
| ^~~~~~
| |
| struct dentry *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:2865:19: note: expected 'struct user_namespace *' but
argument is of type 'struct dentry *'
2865 | int notify_change(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:1151:32: error: passing argument 2 of 'notify_change' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1151 | error = notify_change(dentry, &newattrs, &delegated_inode);
| ^~~~~~~~~
| |
| struct iattr *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:2865:44: note: expected 'struct dentry *' but argument is of
type 'struct iattr *'
2865 | int notify_change(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:1151:43: error: passing argument 3 of 'notify_change' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1151 | error = notify_change(dentry, &newattrs, &delegated_inode);
| ^~~~~~~~~~~~~~~~
| |
| struct inode **
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:2866:5: note: expected 'struct iattr *' but argument is of
type 'struct inode **'
2866 | struct iattr *, struct inode **);
| ^~~~~~~~~~~~~~
> fs/incfs/vfs.c:1151:10: error: too few arguments to function
'notify_change'
1151 | error = notify_change(dentry, &newattrs,
&delegated_inode);
| ^~~~~~~~~~~~~
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:2865:5: note: declared here
2865 | int notify_change(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~
fs/incfs/vfs.c: In function 'ioctl_create_file':
fs/incfs/vfs.c:1261:21: error: passing argument 1 of 'vfs_create' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1261 | error = vfs_create(index_dir_inode, index_file_dentry, args.mode | 0222,
| ^~~~~~~~~~~~~~~
| |
| struct inode *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1771:16: note: expected 'struct user_namespace *' but
argument is of type 'struct inode *'
1771 | int vfs_create(struct user_namespace *, struct inode *,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:1261:38: error: passing argument 2 of 'vfs_create' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1261 | error = vfs_create(index_dir_inode, index_file_dentry, args.mode | 0222,
| ^~~~~~~~~~~~~~~~~
| |
| struct dentry *
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1771:41: note: expected 'struct inode *' but argument is of
type 'struct dentry *'
1771 | int vfs_create(struct user_namespace *, struct inode *,
| ^~~~~~~~~~~~~~
fs/incfs/vfs.c:1261:67: warning: passing argument 3 of 'vfs_create' makes
pointer from integer without a cast [-Wint-conversion]
1261 | error = vfs_create(index_dir_inode, index_file_dentry, args.mode | 0222,
| ~~~~~~~~~~^~~~~~
| |
| int
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1772:9: note: expected 'struct dentry *' but argument is of
type 'int'
1772 | struct dentry *, umode_t, bool);
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:1261:10: error: too few arguments to function 'vfs_create'
1261 | error = vfs_create(index_dir_inode, index_file_dentry, args.mode | 0222,
| ^~~~~~~~~~
In file included from include/linux/huge_mm.h:8,
from include/linux/mm.h:707,
from include/linux/bvec.h:14,
from include/linux/blk_types.h:10,
from include/linux/genhd.h:19,
from include/linux/blkdev.h:8,
from fs/incfs/vfs.c:6:
include/linux/fs.h:1771:5: note: declared here
1771 | int vfs_create(struct user_namespace *, struct inode *,
| ^~~~~~~~~~
fs/incfs/vfs.c:1279:23: error: passing argument 1 of 'vfs_setxattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1279 | error = vfs_setxattr(index_file_dentry, INCFS_XATTR_ID_NAME,
| ^~~~~~~~~~~~~~~~~
| |
| struct dentry *
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:63:18: note: expected 'struct user_namespace *' but
argument is of type 'struct dentry *'
63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/incfs/vfs.c:19:
include/uapi/linux/incrementalfs.h:33:29: error: passing argument 2 of
'vfs_setxattr' from incompatible pointer type
[-Werror=incompatible-pointer-types]
33 | #define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id")
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| char *
fs/incfs/vfs.c:1279:42: note: in expansion of macro 'INCFS_XATTR_ID_NAME'
1279 | error = vfs_setxattr(index_file_dentry, INCFS_XATTR_ID_NAME,
| ^~~~~~~~~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:63:43: note: expected 'struct dentry *' but argument is
of type 'char *'
63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:1280:16: warning: passing argument 4 of 'vfs_setxattr' makes
pointer from integer without a cast [-Wint-conversion]
1280 | file_id_str, strlen(file_id_str), XATTR_CREATE);
| ^~~~~~~~~~~~~~~~~~~
| |
| size_t {aka long unsigned int}
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:64:4: note: expected 'const void *' but argument is of
type 'size_t' {aka 'long unsigned int'}
vim +/notify_change +1151 fs/incfs/vfs.c
1083
1084 static int dir_relative_path_resolve(
1085 struct mount_info *mi,
1086 const char __user *relative_path,
1087 struct path *result_path)
1088 {
1089 struct path *base_path = &mi->mi_backing_dir_path;
1090 int dir_fd = get_unused_fd_flags(0);
1091 struct file *dir_f = NULL;
1092 int error = 0;
1093
1094 if (dir_fd < 0)
1095 return dir_fd;
1096
1097 dir_f = dentry_open(base_path, O_RDONLY | O_NOATIME, mi->mi_owner);
1098
1099 if (IS_ERR(dir_f)) {
1100 error = PTR_ERR(dir_f);
1101 goto out;
1102 }
1103 fd_install(dir_fd, dir_f);
1104
1105 if (!relative_path) {
1106 /* No relative path given, just return the base dir. */
1107 *result_path = *base_path;
1108 path_get(result_path);
1109 goto out;
1110 }
1111
1112 error = user_path_at_empty(dir_fd, relative_path,
1113 LOOKUP_FOLLOW | LOOKUP_DIRECTORY, result_path, NULL);
1114
1115 out:
1116 ksys_close(dir_fd);
1117 if (error)
1118 pr_debug("incfs: %s %d\n", __func__, error);
1119 return error;
1120 }
1121
1122 static int validate_name(char *file_name)
1123 {
1124 struct mem_range name = range(file_name, strlen(file_name));
1125 int i = 0;
1126
1127 if (name.len > INCFS_MAX_NAME_LEN)
1128 return -ENAMETOOLONG;
1129
1130 if (incfs_equal_ranges(pending_reads_file_name_range, name))
1131 return -EINVAL;
1132
1133 for (i = 0; i < name.len; i++)
1134 if (name.data[i] == '/')
1135 return -EINVAL;
1136
1137 return 0;
1138 }
1139
1140 static int chmod(struct dentry *dentry, umode_t mode)
1141 {
1142 struct inode *inode = dentry->d_inode;
1143 struct inode *delegated_inode = NULL;
1144 struct iattr newattrs;
1145 int error;
1146
1147 retry_deleg:
1148 inode_lock(inode);
1149 newattrs.ia_mode = (mode & S_IALLUGO) | (inode->i_mode & ~S_IALLUGO);
1150 newattrs.ia_valid = ATTR_MODE | ATTR_CTIME;
1151 error = notify_change(dentry, &newattrs,
&delegated_inode);
1152 inode_unlock(inode);
1153 if (delegated_inode) {
1154 error = break_deleg_wait(&delegated_inode);
1155 if (!error)
1156 goto retry_deleg;
1157 }
1158 return error;
1159 }
1160
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org