tree:
https://android.googlesource.com/kernel/common android-mainline-tracking
head: 74f61c888eeeb9cbc57d44c61fafe32df9b3da51
commit: f0b5d86cf075ddf98369614019fd10c0e4962838 [386/836] ANDROID: Incremental fs: Add
setattr call
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 f0b5d86cf075ddf98369614019fd10c0e4962838
# 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 >>):
fs/incfs/vfs.c:98:11: error: initialization of 'int (*)(struct user_namespace *,
struct inode *, struct dentry *, umode_t)' {aka 'int (*)(struct user_namespace *,
struct inode *, struct dentry *, short unsigned int)'} from incompatible pointer type
'int (*)(struct inode *, struct dentry *, umode_t)' {aka 'int (*)(struct inode
*, struct dentry *, short unsigned int)'} [-Werror=incompatible-pointer-types]
98 | .mkdir = dir_mkdir,
| ^~~~~~~~~
fs/incfs/vfs.c:98:11: note: (near initialization for
'incfs_dir_inode_ops.mkdir')
fs/incfs/vfs.c:99:12: error: initialization of 'int (*)(struct user_namespace *,
struct inode *, struct dentry *, struct inode *, struct dentry *, unsigned int)' from
incompatible pointer type 'int (*)(struct inode *, struct dentry *, struct inode *,
struct dentry *, unsigned int)' [-Werror=incompatible-pointer-types]
99 | .rename = dir_rename_wrap,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:99:12: note: (near initialization for
'incfs_dir_inode_ops.rename')
> fs/incfs/vfs.c:103:13: error: initialization of 'int
(*)(struct user_namespace *, struct dentry *, struct iattr *)' from incompatible
pointer type 'int (*)(struct dentry *, struct iattr *)'
[-Werror=incompatible-pointer-types]
103 | .setattr = incfs_setattr,
| ^~~~~~~~~~~~~
fs/incfs/vfs.c:103:13: note: (near initialization for
'incfs_dir_inode_ops.setattr')
fs/incfs/vfs.c:163:13: error: initialization of 'int (*)(struct user_namespace *,
struct dentry *, struct iattr *)' from incompatible pointer type 'int (*)(struct
dentry *, struct iattr *)' [-Werror=incompatible-pointer-types]
163 | .setattr = incfs_setattr,
| ^~~~~~~~~~~~~
fs/incfs/vfs.c:163:13: note: (near initialization for
'incfs_file_inode_ops.setattr')
fs/incfs/vfs.c:186:9: error: initialization of 'int (*)(const struct xattr_handler
*, struct user_namespace *, struct dentry *, struct inode *, const char *, const void *,
size_t, int)' {aka 'int (*)(const struct xattr_handler *, struct user_namespace
*, struct dentry *, struct inode *, const char *, const void *, long unsigned int,
int)'} from incompatible pointer type 'int (*)(const struct xattr_handler *,
struct dentry *, struct inode *, const char *, const void *, size_t, int)' {aka
'int (*)(const struct xattr_handler *, struct dentry *, struct inode *, const char *,
const void *, long unsigned int, int)'} [-Werror=incompatible-pointer-types]
186 | .set = incfs_handler_setxattr,
| ^~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:186:9: note: (near initialization for
'incfs_xattr_handler.set')
fs/incfs/vfs.c: In function 'read_size_attr':
fs/incfs/vfs.c:329:28: error: passing argument 1 of 'vfs_getxattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
329 | bytes_read = vfs_getxattr(backing_dentry, INCFS_XATTR_SIZE_NAME,
| ^~~~~~~~~~~~~~
| |
| struct dentry *
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:22: note: expected 'struct user_namespace *' but
argument is of type 'struct dentry *'
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~~~~~~~~~
In file included from fs/incfs/vfs.c:19:
include/uapi/linux/incrementalfs.h:34:31: error: passing argument 2 of
'vfs_getxattr' from incompatible pointer type
[-Werror=incompatible-pointer-types]
34 | #define INCFS_XATTR_SIZE_NAME (XATTR_USER_PREFIX "incfs.size")
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| char *
fs/incfs/vfs.c:329:44: note: in expansion of macro 'INCFS_XATTR_SIZE_NAME'
329 | bytes_read = vfs_getxattr(backing_dentry, INCFS_XATTR_SIZE_NAME,
| ^~~~~~~~~~~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:47: note: expected 'struct dentry *' but argument is
of type 'char *'
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:330:25: warning: passing argument 4 of 'vfs_getxattr' makes
pointer from integer without a cast [-Wint-conversion]
330 | (char *)&attr_value, sizeof(attr_value));
| ^~~~~~~~~~~~~~~~~~
| |
| long unsigned int
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:54:8: note: expected 'void *' but argument is of type
'long unsigned int'
54 | void *, size_t);
| ^~~~~~
fs/incfs/vfs.c:329:15: error: too few arguments to function 'vfs_getxattr'
329 | bytes_read = vfs_getxattr(backing_dentry, INCFS_XATTR_SIZE_NAME,
| ^~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:9: note: declared here
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~
fs/incfs/vfs.c: In function 'inode_set':
fs/incfs/vfs.c:409:20: error: passing argument 1 of 'inode_init_owner' from
incompatible pointer type [-Werror=incompatible-pointer-types]
409 | inode_init_owner(inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
| ^~~~~
| |
| 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:1828:46: note: expected 'struct user_namespace *' but
argument is of type 'struct inode *'
1828 | void inode_init_owner(struct user_namespace *mnt_userns, struct inode *inode,
| ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~
In file included from include/linux/stat.h:7,
from include/linux/fs.h:10,
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/uapi/linux/stat.h:12:18: warning: passing argument 3 of
'inode_init_owner' makes pointer from integer without a cast [-Wint-conversion]
12 | #define S_IFREG 0100000
fs/incfs/vfs.c:409:33: note: in expansion of macro 'S_IFREG'
409 | inode_init_owner(inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
| ^~~~~~~
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:1829:29: note: expected 'const struct inode *' but argument
is of type 'int'
1829 | const struct inode *dir, umode_t mode);
| ~~~~~~~~~~~~~~~~~~~~^~~
fs/incfs/vfs.c:409:3: error: too few arguments to function 'inode_init_owner'
409 | inode_init_owner(inode, NULL, S_IFREG | READ_WRITE_FILE_MODE);
| ^~~~~~~~~~~~~~~~
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:
--
33 | #define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id")
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| char *
fs/incfs/vfs.c:1666:43: note: in expansion of macro 'INCFS_XATTR_ID_NAME'
1666 | uuid_size = vfs_getxattr(backing_dentry, INCFS_XATTR_ID_NAME,
| ^~~~~~~~~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:47: note: expected 'struct dentry *' but argument is
of type 'char *'
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:1667:17: warning: passing argument 4 of 'vfs_getxattr' makes
pointer from integer without a cast [-Wint-conversion]
1667 | file_id_str, 2 * sizeof(incfs_uuid_t));
| ^~~~~~~~~~~~~~~~~~~~~~~~
| |
| long unsigned int
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:54:8: note: expected 'void *' but argument is of type
'long unsigned int'
54 | void *, size_t);
| ^~~~~~
fs/incfs/vfs.c:1666:14: error: too few arguments to function 'vfs_getxattr'
1666 | uuid_size = vfs_getxattr(backing_dentry, INCFS_XATTR_ID_NAME,
| ^~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:9: note: declared here
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~
fs/incfs/vfs.c: In function 'dir_rename':
fs/incfs/vfs.c:1868:21: error: passing argument 1 of 'vfs_rename' from
incompatible pointer type [-Werror=incompatible-pointer-types]
1868 | error = vfs_rename(d_inode(backing_old_dir_dentry), backing_old_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:1796:16: note: expected 'struct renamedata *' but argument
is of type 'struct inode *'
1796 | int vfs_rename(struct renamedata *);
| ^~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:1868:10: error: too many arguments to function 'vfs_rename'
1868 | error = vfs_rename(d_inode(backing_old_dir_dentry), backing_old_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:1796:5: note: declared here
1796 | int vfs_rename(struct renamedata *);
| ^~~~~~~~~~
fs/incfs/vfs.c: In function 'incfs_setattr':
fs/incfs/vfs.c:2062:24: error: passing argument 1 of 'notify_change' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2062 | error = notify_change(backing_dentry, ia, 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: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:2062:40: error: passing argument 2 of 'notify_change' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2062 | error = notify_change(backing_dentry, ia, NULL);
| ^~
| |
| 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:2062:10: error: too few arguments to function 'notify_change'
2062 | error = notify_change(backing_dentry, ia, 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:2865:5: note: declared here
2865 | int notify_change(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~
> fs/incfs/vfs.c:2071:24: error: passing argument 1 of
'simple_setattr' from incompatible pointer type
[-Werror=incompatible-pointer-types]
2071 | return simple_setattr(dentry, ia);
| ^~~~~~
| |
| 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:3261:27: note: expected 'struct user_namespace *' but
argument is of type 'struct dentry *'
3261 | extern int simple_setattr(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:2071:32: error: passing argument 2 of 'simple_setattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2071 | return simple_setattr(dentry, ia);
| ^~
| |
| 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:3261:52: note: expected 'struct dentry *' but argument is of
type 'struct iattr *'
3261 | extern int simple_setattr(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~~~
> fs/incfs/vfs.c:2071:9: error: too few arguments to function
'simple_setattr'
2071 | return simple_setattr(dentry, ia);
| ^~~~~~~~~~~~~~
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:3261:12: note: declared here
3261 | extern int simple_setattr(struct user_namespace *, struct dentry *,
| ^~~~~~~~~~~~~~
fs/incfs/vfs.c: In function 'incfs_getxattr':
fs/incfs/vfs.c:2083:39: error: passing argument 1 of 'vfs_getxattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2083 | return vfs_getxattr(di->backing_path.dentry, name, value, size);
| ~~~~~~~~~~~~~~~~^~~~~~~
| |
| struct dentry *
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:22: note: expected 'struct user_namespace *' but
argument is of type 'struct dentry *'
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:2083:48: error: passing argument 2 of 'vfs_getxattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2083 | return vfs_getxattr(di->backing_path.dentry, name, value, size);
| ^~~~
| |
| const char *
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:47: note: expected 'struct dentry *' but argument is
of type 'const char *'
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:2083:61: warning: passing argument 4 of 'vfs_getxattr' makes
pointer from integer without a cast [-Wint-conversion]
2083 | return vfs_getxattr(di->backing_path.dentry, name, value, size);
| ^~~~
| |
| size_t {aka long
unsigned int}
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:54:8: note: expected 'void *' but argument is of type
'size_t' {aka 'long unsigned int'}
54 | void *, size_t);
| ^~~~~~
fs/incfs/vfs.c:2083:10: error: too few arguments to function 'vfs_getxattr'
2083 | return vfs_getxattr(di->backing_path.dentry, name, value, size);
| ^~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:53:9: note: declared here
53 | ssize_t vfs_getxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~
fs/incfs/vfs.c: In function 'incfs_setxattr':
fs/incfs/vfs.c:2119:39: error: passing argument 1 of 'vfs_setxattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2119 | return vfs_setxattr(di->backing_path.dentry, name, value, size,
| ~~~~~~~~~~~~~~~~^~~~~~~
| |
| 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 *,
| ^~~~~~~~~~~~~~~~~~~~~~~
fs/incfs/vfs.c:2119:48: error: passing argument 2 of 'vfs_setxattr' from
incompatible pointer type [-Werror=incompatible-pointer-types]
2119 | return vfs_setxattr(di->backing_path.dentry, name, value, size,
| ^~~~
| |
| const char *
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:63:43: note: expected 'struct dentry *' but argument is
of type 'const char *'
63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~~~~
fs/incfs/vfs.c:2119:61: warning: passing argument 4 of 'vfs_setxattr' makes
pointer from integer without a cast [-Wint-conversion]
2119 | return vfs_setxattr(di->backing_path.dentry, name, value, size,
| ^~~~
| |
| 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'}
64 | const void *, size_t, int);
| ^~~~~~~~~~~~
fs/incfs/vfs.c:2119:10: error: too few arguments to function 'vfs_setxattr'
2119 | return vfs_setxattr(di->backing_path.dentry, name, value, size,
| ^~~~~~~~~~~~
In file included from fs/incfs/vfs.c:17:
include/linux/xattr.h:63:5: note: declared here
63 | int vfs_setxattr(struct user_namespace *, struct dentry *, const char *,
| ^~~~~~~~~~~~
fs/incfs/vfs.c: In function 'incfs_setattr':
fs/incfs/vfs.c:2072:1: error: control reaches end of non-void function
[-Werror=return-type]
2072 | }
| ^
cc1: some warnings being treated as errors
vim +103 fs/incfs/vfs.c
95
96 static const struct inode_operations incfs_dir_inode_ops = {
97 .lookup = dir_lookup,
98 .mkdir = dir_mkdir,
99 .rename = dir_rename_wrap,
100 .unlink = dir_unlink,
101 .link = dir_link,
102 .rmdir = dir_rmdir,
103 .setattr = incfs_setattr,
104 };
105
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org