int setxattr_copy(const char __user *name, struct xattr_ctx *ctx);
int do_setxattr(struct user_namespace *mnt_userns, struct dentry *dentry,
struct xattr_ctx *ctx);
+ int may_write_xattr(struct user_namespace *mnt_userns, struct inode *inode);
+
+ #ifdef CONFIG_FS_POSIX_ACL
+ int do_set_acl(struct user_namespace *mnt_userns, struct dentry *dentry,
+ const char *acl_name, const void *kvalue, size_t size);
+ ssize_t do_get_acl(struct user_namespace *mnt_userns, struct dentry *dentry,
+ const char *acl_name, void *kvalue, size_t size);
+ #else
+ static inline int do_set_acl(struct user_namespace *mnt_userns,
+ struct dentry *dentry, const char *acl_name,
+ const void *kvalue, size_t size)
+ {
+ return -EOPNOTSUPP;
+ }
+ static inline ssize_t do_get_acl(struct user_namespace *mnt_userns,
+ struct dentry *dentry, const char *acl_name,
+ void *kvalue, size_t size)
+ {
+ return -EOPNOTSUPP;
+ }
+ #endif
ssize_t __kernel_write_iter(struct file *file, struct iov_iter *from, loff_t *pos);
+
+/*
+ * fs/attr.c
+ */
+int setattr_should_drop_sgid(struct user_namespace *mnt_userns,
+ const struct inode *inode);