diff options
Diffstat (limited to 'fs/overlayfs')
| -rw-r--r-- | fs/overlayfs/inode.c | 5 | ||||
| -rw-r--r-- | fs/overlayfs/overlayfs.h | 2 | 
2 files changed, 5 insertions, 2 deletions
| diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c index 7d52e5ef2ac7..ea335d3e55cf 100644 --- a/fs/overlayfs/inode.c +++ b/fs/overlayfs/inode.c @@ -446,12 +446,15 @@ ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size)  	return res;  } -struct posix_acl *ovl_get_acl(struct inode *inode, int type) +struct posix_acl *ovl_get_acl(struct inode *inode, int type, bool rcu)  {  	struct inode *realinode = ovl_inode_real(inode);  	const struct cred *old_cred;  	struct posix_acl *acl; +	if (rcu) +		return ERR_PTR(-ECHILD); +  	if (!IS_ENABLED(CONFIG_FS_POSIX_ACL) || !IS_POSIXACL(realinode))  		return NULL; diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h index e9b3e7880fc0..3894f3347955 100644 --- a/fs/overlayfs/overlayfs.h +++ b/fs/overlayfs/overlayfs.h @@ -498,7 +498,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);  ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size); -struct posix_acl *ovl_get_acl(struct inode *inode, int type); +struct posix_acl *ovl_get_acl(struct inode *inode, int type, bool rcu);  int ovl_update_time(struct inode *inode, struct timespec64 *ts, int flags);  bool ovl_is_private_xattr(struct super_block *sb, const char *name); | 
