diff --git a/Documentation/filesystems/locking.rst b/Documentation/filesystems/locking.rst index bcb092e74c1e..c0f2c7586531 100644 --- a/Documentation/filesystems/locking.rst +++ b/Documentation/filesystems/locking.rst @@ -125,7 +125,7 @@ prototypes:: bool (*list)(struct dentry *dentry); int (*get)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, - size_t size, int flags); + size_t size); int (*set)(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags); diff --git a/fs/9p/acl.c b/fs/9p/acl.c index cb14e8b312bc..6261719f6f2a 100644 --- a/fs/9p/acl.c +++ b/fs/9p/acl.c @@ -214,8 +214,7 @@ int v9fs_acl_mode(struct inode *dir, umode_t *modep, static int v9fs_xattr_get_acl(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { struct v9fs_session_info *v9ses; struct posix_acl *acl; diff --git a/fs/9p/xattr.c b/fs/9p/xattr.c index 955eee37516b..87217dd0433e 100644 --- a/fs/9p/xattr.c +++ b/fs/9p/xattr.c @@ -149,8 +149,7 @@ ssize_t v9fs_listxattr(struct dentry *dentry, char *buffer, size_t buffer_size) static int v9fs_xattr_handler_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { const char *full_name = xattr_full_name(handler, name); diff --git a/fs/afs/xattr.c b/fs/afs/xattr.c index 6992918361b6..95c573dcda11 100644 --- a/fs/afs/xattr.c +++ b/fs/afs/xattr.c @@ -59,7 +59,7 @@ static const struct afs_operation_ops afs_fetch_acl_operation = { static int afs_xattr_get_acl(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, - void *buffer, size_t size, int flags) + void *buffer, size_t size) { struct afs_operation *op; struct afs_vnode *vnode = AFS_FS_I(inode); @@ -160,7 +160,7 @@ static const struct afs_operation_ops yfs_fetch_opaque_acl_operation = { static int afs_xattr_get_yfs(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, - void *buffer, size_t size, int flags) + void *buffer, size_t size) { struct afs_operation *op; struct afs_vnode *vnode = AFS_FS_I(inode); @@ -283,7 +283,7 @@ static const struct xattr_handler afs_xattr_yfs_handler = { static int afs_xattr_get_cell(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, - void *buffer, size_t size, int flags) + void *buffer, size_t size) { struct afs_vnode *vnode = AFS_FS_I(inode); struct afs_cell *cell = vnode->volume->cell; @@ -310,7 +310,7 @@ static const struct xattr_handler afs_xattr_afs_cell_handler = { static int afs_xattr_get_fid(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, - void *buffer, size_t size, int flags) + void *buffer, size_t size) { struct afs_vnode *vnode = AFS_FS_I(inode); char text[16 + 1 + 24 + 1 + 8 + 1]; @@ -348,7 +348,7 @@ static const struct xattr_handler afs_xattr_afs_fid_handler = { static int afs_xattr_get_volume(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, const char *name, - void *buffer, size_t size, int flags) + void *buffer, size_t size) { struct afs_vnode *vnode = AFS_FS_I(inode); const char *volname = vnode->volume->name; diff --git a/fs/btrfs/xattr.c b/fs/btrfs/xattr.c index 995fe1bcf36a..af6246f36a9e 100644 --- a/fs/btrfs/xattr.c +++ b/fs/btrfs/xattr.c @@ -355,8 +355,7 @@ ssize_t btrfs_listxattr(struct dentry *dentry, char *buffer, size_t size) static int btrfs_xattr_handler_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { name = xattr_full_name(handler, name); return btrfs_getxattr(inode, name, buffer, size); diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index ee8e1f4d003e..24997982de01 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -1230,8 +1230,7 @@ int __ceph_setxattr(struct inode *inode, const char *name, static int ceph_get_xattr_handler(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *value, size_t size, - int flags) + const char *name, void *value, size_t size) { if (!ceph_is_valid_xattr(name)) return -EOPNOTSUPP; diff --git a/fs/cifs/xattr.c b/fs/cifs/xattr.c index 641ad3d1ebdb..6b658a1172ef 100644 --- a/fs/cifs/xattr.c +++ b/fs/cifs/xattr.c @@ -288,7 +288,7 @@ static int cifs_creation_time_get(struct dentry *dentry, struct inode *inode, static int cifs_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *value, size_t size, int flags) + const char *name, void *value, size_t size) { ssize_t rc = -EOPNOTSUPP; unsigned int xid; diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 30d8fd94d261..58d0f7187997 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c @@ -1044,8 +1044,7 @@ ecryptfs_getxattr_lower(struct dentry *lower_dentry, struct inode *lower_inode, goto out; } inode_lock(lower_inode); - rc = __vfs_getxattr(lower_dentry, lower_inode, name, value, size, - XATTR_NOSECURITY); + rc = __vfs_getxattr(lower_dentry, lower_inode, name, value, size); inode_unlock(lower_inode); out: return rc; @@ -1130,8 +1129,7 @@ const struct inode_operations ecryptfs_main_iops = { static int ecryptfs_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return ecryptfs_getxattr(dentry, inode, name, buffer, size); } diff --git a/fs/ecryptfs/mmap.c b/fs/ecryptfs/mmap.c index bc1ca4dea751..019572c6b39a 100644 --- a/fs/ecryptfs/mmap.c +++ b/fs/ecryptfs/mmap.c @@ -422,7 +422,7 @@ static int ecryptfs_write_inode_size_to_xattr(struct inode *ecryptfs_inode) } inode_lock(lower_inode); size = __vfs_getxattr(lower_dentry, lower_inode, ECRYPTFS_XATTR_NAME, - xattr_virt, PAGE_SIZE, XATTR_NOSECURITY); + xattr_virt, PAGE_SIZE); if (size < 0) size = 8; put_unaligned_be64(i_size_read(ecryptfs_inode), xattr_virt); diff --git a/fs/erofs/xattr.c b/fs/erofs/xattr.c index 6330bca9d91d..47314a26767a 100644 --- a/fs/erofs/xattr.c +++ b/fs/erofs/xattr.c @@ -471,8 +471,7 @@ int erofs_getxattr(struct inode *inode, int index, static int erofs_xattr_generic_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { struct erofs_sb_info *const sbi = EROFS_I_SB(inode); diff --git a/fs/ext2/xattr_security.c b/fs/ext2/xattr_security.c index d5f6eb0b487b..9a682e440acb 100644 --- a/fs/ext2/xattr_security.c +++ b/fs/ext2/xattr_security.c @@ -11,7 +11,7 @@ static int ext2_xattr_security_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { return ext2_xattr_get(inode, EXT2_XATTR_INDEX_SECURITY, name, buffer, size); diff --git a/fs/ext2/xattr_trusted.c b/fs/ext2/xattr_trusted.c index 8d313664f0fa..49add1107850 100644 --- a/fs/ext2/xattr_trusted.c +++ b/fs/ext2/xattr_trusted.c @@ -18,7 +18,7 @@ ext2_xattr_trusted_list(struct dentry *dentry) static int ext2_xattr_trusted_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { return ext2_xattr_get(inode, EXT2_XATTR_INDEX_TRUSTED, name, buffer, size); diff --git a/fs/ext2/xattr_user.c b/fs/ext2/xattr_user.c index 712b7c95cc64..c243a3b4d69d 100644 --- a/fs/ext2/xattr_user.c +++ b/fs/ext2/xattr_user.c @@ -20,7 +20,7 @@ ext2_xattr_user_list(struct dentry *dentry) static int ext2_xattr_user_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { if (!test_opt(inode->i_sb, XATTR_USER)) return -EOPNOTSUPP; diff --git a/fs/ext4/xattr_hurd.c b/fs/ext4/xattr_hurd.c index b96df3be7634..8cfa74a56361 100644 --- a/fs/ext4/xattr_hurd.c +++ b/fs/ext4/xattr_hurd.c @@ -21,8 +21,7 @@ ext4_xattr_hurd_list(struct dentry *dentry) static int ext4_xattr_hurd_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { if (!test_opt(inode->i_sb, XATTR_USER)) return -EOPNOTSUPP; diff --git a/fs/ext4/xattr_security.c b/fs/ext4/xattr_security.c index 50fb71393fb6..197a9d8a15ef 100644 --- a/fs/ext4/xattr_security.c +++ b/fs/ext4/xattr_security.c @@ -15,7 +15,7 @@ static int ext4_xattr_security_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { return ext4_xattr_get(inode, EXT4_XATTR_INDEX_SECURITY, name, buffer, size); diff --git a/fs/ext4/xattr_trusted.c b/fs/ext4/xattr_trusted.c index 64bd8f86c1f1..e9389e5d75c3 100644 --- a/fs/ext4/xattr_trusted.c +++ b/fs/ext4/xattr_trusted.c @@ -22,7 +22,7 @@ ext4_xattr_trusted_list(struct dentry *dentry) static int ext4_xattr_trusted_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { return ext4_xattr_get(inode, EXT4_XATTR_INDEX_TRUSTED, name, buffer, size); diff --git a/fs/ext4/xattr_user.c b/fs/ext4/xattr_user.c index b7301373820e..d4546184b34b 100644 --- a/fs/ext4/xattr_user.c +++ b/fs/ext4/xattr_user.c @@ -21,7 +21,7 @@ ext4_xattr_user_list(struct dentry *dentry) static int ext4_xattr_user_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { if (!test_opt(inode->i_sb, XATTR_USER)) return -EOPNOTSUPP; diff --git a/fs/f2fs/xattr.c b/fs/f2fs/xattr.c index d0313592a8ae..8159fae74b9a 100644 --- a/fs/f2fs/xattr.c +++ b/fs/f2fs/xattr.c @@ -44,7 +44,7 @@ static void xattr_free(struct f2fs_sb_info *sbi, void *xattr_addr, static int f2fs_xattr_generic_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { struct f2fs_sb_info *sbi = F2FS_SB(inode->i_sb); @@ -99,7 +99,7 @@ static bool f2fs_xattr_trusted_list(struct dentry *dentry) static int f2fs_xattr_advise_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { if (buffer) *((char *)buffer) = F2FS_I(inode)->i_advise; diff --git a/fs/fuse/xattr.c b/fs/fuse/xattr.c index aab4c9cf8483..cdea18de94f7 100644 --- a/fs/fuse/xattr.c +++ b/fs/fuse/xattr.c @@ -179,7 +179,7 @@ int fuse_removexattr(struct inode *inode, const char *name) static int fuse_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *value, size_t size, int flags) + const char *name, void *value, size_t size) { if (fuse_is_bad(inode)) return -EIO; @@ -208,7 +208,7 @@ static bool no_xattr_list(struct dentry *dentry) static int no_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *value, size_t size, int flags) + const char *name, void *value, size_t size) { return -EOPNOTSUPP; } diff --git a/fs/gfs2/xattr.c b/fs/gfs2/xattr.c index 2e4a9b9dcad1..9d7667bc4292 100644 --- a/fs/gfs2/xattr.c +++ b/fs/gfs2/xattr.c @@ -588,8 +588,7 @@ static int __gfs2_xattr_get(struct inode *inode, const char *name, static int gfs2_xattr_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { struct gfs2_inode *ip = GFS2_I(inode); struct gfs2_holder gh; diff --git a/fs/hfs/attr.c b/fs/hfs/attr.c index 08222a9c5d31..74fa62643136 100644 --- a/fs/hfs/attr.c +++ b/fs/hfs/attr.c @@ -115,7 +115,7 @@ static ssize_t __hfs_getxattr(struct inode *inode, enum hfs_xattr_type type, static int hfs_xattr_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *value, size_t size, int flags) + const char *name, void *value, size_t size) { return __hfs_getxattr(inode, handler->flags, value, size); } diff --git a/fs/hfsplus/xattr.c b/fs/hfsplus/xattr.c index 381c2aaedbc8..bb0b27d88e50 100644 --- a/fs/hfsplus/xattr.c +++ b/fs/hfsplus/xattr.c @@ -839,8 +839,7 @@ static int hfsplus_removexattr(struct inode *inode, const char *name) static int hfsplus_osx_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { /* * Don't allow retrieving properly prefixed attributes diff --git a/fs/hfsplus/xattr_security.c b/fs/hfsplus/xattr_security.c index 43e28b3a716d..cfbe6a3bfb1e 100644 --- a/fs/hfsplus/xattr_security.c +++ b/fs/hfsplus/xattr_security.c @@ -15,8 +15,7 @@ static int hfsplus_security_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, - size_t size, int flags) + const char *name, void *buffer, size_t size) { return hfsplus_getxattr(inode, name, buffer, size, XATTR_SECURITY_PREFIX, diff --git a/fs/hfsplus/xattr_trusted.c b/fs/hfsplus/xattr_trusted.c index 54d926314f8c..fbad91e1dada 100644 --- a/fs/hfsplus/xattr_trusted.c +++ b/fs/hfsplus/xattr_trusted.c @@ -14,8 +14,7 @@ static int hfsplus_trusted_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, - size_t size, int flags) + const char *name, void *buffer, size_t size) { return hfsplus_getxattr(inode, name, buffer, size, XATTR_TRUSTED_PREFIX, diff --git a/fs/hfsplus/xattr_user.c b/fs/hfsplus/xattr_user.c index 4d2b1ffff887..74d19faf255e 100644 --- a/fs/hfsplus/xattr_user.c +++ b/fs/hfsplus/xattr_user.c @@ -14,8 +14,7 @@ static int hfsplus_user_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return hfsplus_getxattr(inode, name, buffer, size, diff --git a/fs/incfs/vfs.c b/fs/incfs/vfs.c index 72754fadef0d..7892ecfc2dd7 100644 --- a/fs/incfs/vfs.c +++ b/fs/incfs/vfs.c @@ -128,8 +128,7 @@ const struct inode_operations incfs_file_inode_ops = { static int incfs_handler_getxattr(const struct xattr_handler *xh, struct dentry *d, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return incfs_getxattr(d, name, buffer, size); } diff --git a/fs/jffs2/security.c b/fs/jffs2/security.c index e6f42fe435af..c2332e30f218 100644 --- a/fs/jffs2/security.c +++ b/fs/jffs2/security.c @@ -50,8 +50,7 @@ int jffs2_init_security(struct inode *inode, struct inode *dir, /* ---- XATTR Handler for "security.*" ----------------- */ static int jffs2_security_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return do_jffs2_getxattr(inode, JFFS2_XPREFIX_SECURITY, name, buffer, size); diff --git a/fs/jffs2/xattr_trusted.c b/fs/jffs2/xattr_trusted.c index 9dccaae549f5..5d6030826c52 100644 --- a/fs/jffs2/xattr_trusted.c +++ b/fs/jffs2/xattr_trusted.c @@ -18,8 +18,7 @@ static int jffs2_trusted_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return do_jffs2_getxattr(inode, JFFS2_XPREFIX_TRUSTED, name, buffer, size); diff --git a/fs/jffs2/xattr_user.c b/fs/jffs2/xattr_user.c index c0983a3e810b..9d027b4abcf9 100644 --- a/fs/jffs2/xattr_user.c +++ b/fs/jffs2/xattr_user.c @@ -18,8 +18,7 @@ static int jffs2_user_getxattr(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return do_jffs2_getxattr(inode, JFFS2_XPREFIX_USER, name, buffer, size); diff --git a/fs/jfs/xattr.c b/fs/jfs/xattr.c index 5c79a35bf62f..db41e7803163 100644 --- a/fs/jfs/xattr.c +++ b/fs/jfs/xattr.c @@ -925,7 +925,7 @@ static int __jfs_xattr_set(struct inode *inode, const char *name, static int jfs_xattr_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *value, size_t size, int flags) + const char *name, void *value, size_t size) { name = xattr_full_name(handler, name); return __jfs_getxattr(inode, name, value, size); @@ -942,8 +942,7 @@ static int jfs_xattr_set(const struct xattr_handler *handler, static int jfs_xattr_get_os2(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *value, size_t size, - int flags) + const char *name, void *value, size_t size) { if (is_known_namespace(name)) return -EOPNOTSUPP; diff --git a/fs/kernfs/inode.c b/fs/kernfs/inode.c index 1c9e4eca3a4e..fc2469a20fed 100644 --- a/fs/kernfs/inode.c +++ b/fs/kernfs/inode.c @@ -310,8 +310,7 @@ int kernfs_xattr_set(struct kernfs_node *kn, const char *name, static int kernfs_vfs_xattr_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *suffix, void *value, size_t size, - int flags) + const char *suffix, void *value, size_t size) { const char *name = xattr_full_name(handler, suffix); struct kernfs_node *kn = inode->i_private; diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c index 4e1d691b7371..2f4679a62712 100644 --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -7500,8 +7500,7 @@ static int nfs4_xattr_set_nfs4_acl(const struct xattr_handler *handler, static int nfs4_xattr_get_nfs4_acl(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *key, void *buf, size_t buflen, - int flags) + const char *key, void *buf, size_t buflen) { return nfs4_proc_get_acl(inode, buf, buflen); } @@ -7526,8 +7525,7 @@ static int nfs4_xattr_set_nfs4_label(const struct xattr_handler *handler, static int nfs4_xattr_get_nfs4_label(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *key, void *buf, size_t buflen, - int flags) + const char *key, void *buf, size_t buflen) { if (security_ismaclabel(key)) return nfs4_get_security_label(inode, buf, buflen); @@ -7604,8 +7602,7 @@ static int nfs4_xattr_set_nfs4_user(const struct xattr_handler *handler, static int nfs4_xattr_get_nfs4_user(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *key, void *buf, size_t buflen, - int flags) + const char *key, void *buf, size_t buflen) { struct nfs_access_entry cache; ssize_t ret; diff --git a/fs/ocfs2/xattr.c b/fs/ocfs2/xattr.c index 0ed0a61d4c5f..9ccd19d8f7b1 100644 --- a/fs/ocfs2/xattr.c +++ b/fs/ocfs2/xattr.c @@ -7242,8 +7242,7 @@ int ocfs2_init_security_and_acl(struct inode *dir, */ static int ocfs2_xattr_security_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return ocfs2_xattr_get(inode, OCFS2_XATTR_INDEX_SECURITY, name, buffer, size); @@ -7315,8 +7314,7 @@ const struct xattr_handler ocfs2_xattr_security_handler = { */ static int ocfs2_xattr_trusted_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return ocfs2_xattr_get(inode, OCFS2_XATTR_INDEX_TRUSTED, name, buffer, size); @@ -7342,8 +7340,7 @@ const struct xattr_handler ocfs2_xattr_trusted_handler = { */ static int ocfs2_xattr_user_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { struct ocfs2_super *osb = OCFS2_SB(inode->i_sb); diff --git a/fs/orangefs/xattr.c b/fs/orangefs/xattr.c index ef4180bff7bb..bdc285aea360 100644 --- a/fs/orangefs/xattr.c +++ b/fs/orangefs/xattr.c @@ -541,8 +541,7 @@ static int orangefs_xattr_get_default(const struct xattr_handler *handler, struct inode *inode, const char *name, void *buffer, - size_t size, - int flags) + size_t size) { return orangefs_inode_getxattr(inode, name, buffer, size); diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index ea28c956fe73..28bdde27566a 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -386,7 +386,7 @@ int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name, } int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name, - void *value, size_t size, int flags) + void *value, size_t size) { ssize_t res; const struct cred *old_cred; @@ -395,7 +395,7 @@ int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name, old_cred = ovl_override_creds(dentry->d_sb); res = __vfs_getxattr(realdentry, d_inode(realdentry), name, - value, size, flags); + value, size); revert_creds(old_cred); return res; } diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h index 95e005a617c3..569123c37ce8 100644 --- a/fs/overlayfs/overlayfs.h +++ b/fs/overlayfs/overlayfs.h @@ -188,7 +188,7 @@ static inline ssize_t ovl_do_getxattr(struct ovl_fs *ofs, struct dentry *dentry, const char *name = ovl_xattr(ofs, ox); struct inode *ip = d_inode(dentry); - return __vfs_getxattr(dentry, ip, name, value, size, XATTR_NOSECURITY); + return __vfs_getxattr(dentry, ip, name, value, size); } static inline int ovl_do_setxattr(struct ovl_fs *ofs, struct dentry *dentry, @@ -445,7 +445,7 @@ int ovl_permission(struct inode *inode, int mask); int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name, const void *value, size_t size, int flags); int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name, - void *value, size_t size, int flags); + void *value, size_t size); ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size); struct posix_acl *ovl_get_acl(struct inode *inode, int type); int ovl_update_time(struct inode *inode, struct timespec64 *ts, int flags); diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c index 944bdb06da7e..d58b8f2bf9d0 100644 --- a/fs/overlayfs/super.c +++ b/fs/overlayfs/super.c @@ -982,9 +982,9 @@ static unsigned int ovl_split_lowerdirs(char *str) static int __maybe_unused ovl_posix_acl_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, int flags) + const char *name, void *buffer, size_t size) { - return ovl_xattr_get(dentry, inode, handler->name, buffer, size, flags); + return ovl_xattr_get(dentry, inode, handler->name, buffer, size); } static int __maybe_unused @@ -1047,8 +1047,7 @@ ovl_posix_acl_xattr_set(const struct xattr_handler *handler, static int ovl_own_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { return -EOPNOTSUPP; } @@ -1063,10 +1062,9 @@ static int ovl_own_xattr_set(const struct xattr_handler *handler, static int ovl_other_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { - return ovl_xattr_get(dentry, inode, name, buffer, size, flags); + return ovl_xattr_get(dentry, inode, name, buffer, size); } static int ovl_other_xattr_set(const struct xattr_handler *handler, diff --git a/fs/posix_acl.c b/fs/posix_acl.c index f3fbc26df68a..95882b3f5f62 100644 --- a/fs/posix_acl.c +++ b/fs/posix_acl.c @@ -835,7 +835,7 @@ EXPORT_SYMBOL (posix_acl_to_xattr); static int posix_acl_xattr_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *value, size_t size, int flags) + const char *name, void *value, size_t size) { struct posix_acl *acl; int error; diff --git a/fs/reiserfs/xattr_security.c b/fs/reiserfs/xattr_security.c index eedfa07a4fd0..20be9a0e5870 100644 --- a/fs/reiserfs/xattr_security.c +++ b/fs/reiserfs/xattr_security.c @@ -11,8 +11,7 @@ static int security_get(const struct xattr_handler *handler, struct dentry *unused, - struct inode *inode, const char *name, void *buffer, size_t size, - int flags) + struct inode *inode, const char *name, void *buffer, size_t size) { if (IS_PRIVATE(inode)) return -EPERM; diff --git a/fs/reiserfs/xattr_trusted.c b/fs/reiserfs/xattr_trusted.c index 2d11d98605dd..5ed48da3d02b 100644 --- a/fs/reiserfs/xattr_trusted.c +++ b/fs/reiserfs/xattr_trusted.c @@ -10,8 +10,7 @@ static int trusted_get(const struct xattr_handler *handler, struct dentry *unused, - struct inode *inode, const char *name, void *buffer, size_t size, - int flags) + struct inode *inode, const char *name, void *buffer, size_t size) { if (!capable(CAP_SYS_ADMIN) || IS_PRIVATE(inode)) return -EPERM; diff --git a/fs/reiserfs/xattr_user.c b/fs/reiserfs/xattr_user.c index 2a59d85c69c9..a573ca45bacc 100644 --- a/fs/reiserfs/xattr_user.c +++ b/fs/reiserfs/xattr_user.c @@ -9,8 +9,7 @@ static int user_get(const struct xattr_handler *handler, struct dentry *unused, - struct inode *inode, const char *name, void *buffer, size_t size, - int flags) + struct inode *inode, const char *name, void *buffer, size_t size) { if (!reiserfs_xattrs_user(inode->i_sb)) return -EOPNOTSUPP; diff --git a/fs/squashfs/xattr.c b/fs/squashfs/xattr.c index d8d58c990652..e1e3f3dd5a06 100644 --- a/fs/squashfs/xattr.c +++ b/fs/squashfs/xattr.c @@ -204,7 +204,7 @@ static int squashfs_xattr_handler_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, const char *name, - void *buffer, size_t size, int flags) + void *buffer, size_t size) { return squashfs_xattr_get(inode, handler->flags, name, buffer, size); diff --git a/fs/ubifs/xattr.c b/fs/ubifs/xattr.c index 5ea5fc8f371a..842d5f14545d 100644 --- a/fs/ubifs/xattr.c +++ b/fs/ubifs/xattr.c @@ -671,8 +671,7 @@ int ubifs_init_security(struct inode *dentry, struct inode *inode, static int xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { dbg_gen("xattr '%s', ino %lu ('%pd'), buf size %zd", name, inode->i_ino, dentry, size); diff --git a/fs/xattr.c b/fs/xattr.c index b160c8130eff..fd57153b1f61 100644 --- a/fs/xattr.c +++ b/fs/xattr.c @@ -356,7 +356,7 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, return PTR_ERR(handler); if (!handler->get) return -EOPNOTSUPP; - error = handler->get(handler, dentry, inode, name, NULL, 0, 0); + error = handler->get(handler, dentry, inode, name, NULL, 0); if (error < 0) return error; @@ -367,20 +367,32 @@ vfs_getxattr_alloc(struct dentry *dentry, const char *name, char **xattr_value, memset(value, 0, error + 1); } - error = handler->get(handler, dentry, inode, name, value, error, 0); + error = handler->get(handler, dentry, inode, name, value, error); *xattr_value = value; return error; } ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, - void *value, size_t size, int flags) + void *value, size_t size) { const struct xattr_handler *handler; + + handler = xattr_resolve_name(inode, &name); + if (IS_ERR(handler)) + return PTR_ERR(handler); + if (!handler->get) + return -EOPNOTSUPP; + return handler->get(handler, dentry, inode, name, value, size); +} +EXPORT_SYMBOL(__vfs_getxattr); + +ssize_t +vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) +{ + struct inode *inode = dentry->d_inode; int error; - if (flags & XATTR_NOSECURITY) - goto nolsm; error = xattr_permission(inode, name, MAY_READ); if (error) return error; @@ -402,19 +414,7 @@ __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, return ret; } nolsm: - handler = xattr_resolve_name(inode, &name); - if (IS_ERR(handler)) - return PTR_ERR(handler); - if (!handler->get) - return -EOPNOTSUPP; - return handler->get(handler, dentry, inode, name, value, size, flags); -} -EXPORT_SYMBOL(__vfs_getxattr); - -ssize_t -vfs_getxattr(struct dentry *dentry, const char *name, void *value, size_t size) -{ - return __vfs_getxattr(dentry, dentry->d_inode, name, value, size, 0); + return __vfs_getxattr(dentry, inode, name, value, size); } EXPORT_SYMBOL_GPL(vfs_getxattr); diff --git a/fs/xfs/xfs_xattr.c b/fs/xfs/xfs_xattr.c index dd81d10d0679..bca48b308c02 100644 --- a/fs/xfs/xfs_xattr.c +++ b/fs/xfs/xfs_xattr.c @@ -19,8 +19,7 @@ static int xfs_xattr_get(const struct xattr_handler *handler, struct dentry *unused, - struct inode *inode, const char *name, void *value, size_t size, - int flags) + struct inode *inode, const char *name, void *value, size_t size) { struct xfs_da_args args = { .dp = XFS_I(inode), diff --git a/include/linux/xattr.h b/include/linux/xattr.h index 28c0da780302..10b4dc2709f0 100644 --- a/include/linux/xattr.h +++ b/include/linux/xattr.h @@ -31,10 +31,10 @@ struct xattr_handler { const char *prefix; int flags; /* fs private flags */ bool (*list)(struct dentry *dentry); - int (*get)(const struct xattr_handler *handler, struct dentry *dentry, + int (*get)(const struct xattr_handler *, struct dentry *dentry, struct inode *inode, const char *name, void *buffer, - size_t size, int flags); - int (*set)(const struct xattr_handler *handler, struct dentry *dentry, + size_t size); + int (*set)(const struct xattr_handler *, struct dentry *dentry, struct inode *inode, const char *name, const void *buffer, size_t size, int flags); }; @@ -47,8 +47,7 @@ struct xattr { size_t value_len; }; -ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, - const char *name, void *buffer, size_t size, int flags); +ssize_t __vfs_getxattr(struct dentry *, struct inode *, const char *, void *, size_t); ssize_t vfs_getxattr(struct dentry *, const char *, void *, size_t); ssize_t vfs_listxattr(struct dentry *d, char *list, size_t size); int __vfs_setxattr(struct dentry *, struct inode *, const char *, const void *, size_t, int); diff --git a/include/uapi/linux/xattr.h b/include/uapi/linux/xattr.h index d22191a3cf09..9463db2dfa9d 100644 --- a/include/uapi/linux/xattr.h +++ b/include/uapi/linux/xattr.h @@ -18,11 +18,8 @@ #if __UAPI_DEF_XATTR #define __USE_KERNEL_XATTR_DEFS -#define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ -#define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ -#ifdef __KERNEL__ /* following is kernel internal, colocated for maintenance */ -#define XATTR_NOSECURITY 0x4 /* get value, do not involve security check */ -#endif +#define XATTR_CREATE 0x1 /* set value, fail if attr already exists */ +#define XATTR_REPLACE 0x2 /* set value, fail if attr does not exist */ #endif /* Namespaces */ diff --git a/mm/shmem.c b/mm/shmem.c index 074ca158a706..1b254fbfdf52 100644 --- a/mm/shmem.c +++ b/mm/shmem.c @@ -3264,8 +3264,7 @@ static int shmem_initxattrs(struct inode *inode, static int shmem_xattr_handler_get(const struct xattr_handler *handler, struct dentry *unused, struct inode *inode, - const char *name, void *buffer, size_t size, - int flags) + const char *name, void *buffer, size_t size) { struct shmem_inode_info *info = SHMEM_I(inode); diff --git a/net/socket.c b/net/socket.c index 90f1515bc1b1..7f0617ab5437 100644 --- a/net/socket.c +++ b/net/socket.c @@ -314,8 +314,7 @@ static const struct dentry_operations sockfs_dentry_operations = { static int sockfs_xattr_get(const struct xattr_handler *handler, struct dentry *dentry, struct inode *inode, - const char *suffix, void *value, size_t size, - int flags) + const char *suffix, void *value, size_t size) { if (value) { if (dentry->d_name.len + 1 > size) diff --git a/security/commoncap.c b/security/commoncap.c index 6859950d13ea..78598be45f10 100644 --- a/security/commoncap.c +++ b/security/commoncap.c @@ -297,8 +297,7 @@ int cap_inode_need_killpriv(struct dentry *dentry) struct inode *inode = d_backing_inode(dentry); int error; - error = __vfs_getxattr(dentry, inode, XATTR_NAME_CAPS, NULL, 0, - XATTR_NOSECURITY); + error = __vfs_getxattr(dentry, inode, XATTR_NAME_CAPS, NULL, 0); return error > 0; } @@ -615,8 +614,7 @@ int get_vfs_caps_from_disk(const struct dentry *dentry, struct cpu_vfs_cap_data fs_ns = inode->i_sb->s_user_ns; size = __vfs_getxattr((struct dentry *)dentry, inode, - XATTR_NAME_CAPS, &data, XATTR_CAPS_SZ, - XATTR_NOSECURITY); + XATTR_NAME_CAPS, &data, XATTR_CAPS_SZ); if (size == -ENODATA || size == -EOPNOTSUPP) /* no data, that's ok */ return -ENODATA; diff --git a/security/integrity/evm/evm_main.c b/security/integrity/evm/evm_main.c index d3b358bc1e5e..76d19146d74b 100644 --- a/security/integrity/evm/evm_main.c +++ b/security/integrity/evm/evm_main.c @@ -101,8 +101,7 @@ static int evm_find_protected_xattrs(struct dentry *dentry) return -EOPNOTSUPP; list_for_each_entry_lockless(xattr, &evm_config_xattrnames, list) { - error = __vfs_getxattr(dentry, inode, xattr->name, NULL, 0, - XATTR_NOSECURITY); + error = __vfs_getxattr(dentry, inode, xattr->name, NULL, 0); if (error < 0) { if (error == -ENODATA) continue; diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c index 4d7e0f8082df..1d0faa0b37f7 100644 --- a/security/selinux/hooks.c +++ b/security/selinux/hooks.c @@ -505,8 +505,7 @@ static int sb_check_xattr_support(struct super_block *sb) goto fallback; } - rc = __vfs_getxattr(root, root_inode, XATTR_NAME_SELINUX, NULL, 0, - XATTR_NOSECURITY); + rc = __vfs_getxattr(root, root_inode, XATTR_NAME_SELINUX, NULL, 0); if (rc < 0 && rc != -ENODATA) { if (rc == -EOPNOTSUPP) { pr_warn("SELinux: (dev %s, type %s) has no security xattr handler\n", @@ -1361,14 +1360,12 @@ static int inode_doinit_use_xattr(struct inode *inode, struct dentry *dentry, return -ENOMEM; context[len] = '\0'; - rc = __vfs_getxattr(dentry, inode, XATTR_NAME_SELINUX, context, len, - XATTR_NOSECURITY); + rc = __vfs_getxattr(dentry, inode, XATTR_NAME_SELINUX, context, len); if (rc == -ERANGE) { kfree(context); /* Need a larger buffer. Query for the right size. */ - rc = __vfs_getxattr(dentry, inode, XATTR_NAME_SELINUX, NULL, 0, - XATTR_NOSECURITY); + rc = __vfs_getxattr(dentry, inode, XATTR_NAME_SELINUX, NULL, 0); if (rc < 0) return rc; @@ -1379,7 +1376,7 @@ static int inode_doinit_use_xattr(struct inode *inode, struct dentry *dentry, context[len] = '\0'; rc = __vfs_getxattr(dentry, inode, XATTR_NAME_SELINUX, - context, len, XATTR_NOSECURITY); + context, len); } if (rc < 0) { kfree(context); diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c index d6287ce1a64f..f69c3dd9a0c6 100644 --- a/security/smack/smack_lsm.c +++ b/security/smack/smack_lsm.c @@ -289,8 +289,7 @@ static struct smack_known *smk_fetch(const char *name, struct inode *ip, if (buffer == NULL) return ERR_PTR(-ENOMEM); - rc = __vfs_getxattr(dp, ip, name, buffer, SMK_LONGLABEL, - XATTR_NOSECURITY); + rc = __vfs_getxattr(dp, ip, name, buffer, SMK_LONGLABEL); if (rc < 0) skp = ERR_PTR(rc); else if (rc == 0) @@ -3433,7 +3432,7 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode) } else { rc = __vfs_getxattr(dp, inode, XATTR_NAME_SMACKTRANSMUTE, trattr, - TRANS_TRUE_SIZE, XATTR_NOSECURITY); + TRANS_TRUE_SIZE); if (rc >= 0 && strncmp(trattr, TRANS_TRUE, TRANS_TRUE_SIZE) != 0) rc = -EINVAL;