fs: provide rcu-walk aware permission i_ops
Signed-off-by: Nick Piggin <npiggin@kernel.dk>
This commit is contained in:
parent
34286d6662
commit
b74c79e993
60 changed files with 287 additions and 146 deletions
|
@ -870,11 +870,14 @@ out:
|
|||
return err;
|
||||
}
|
||||
|
||||
static int reiserfs_check_acl(struct inode *inode, int mask)
|
||||
static int reiserfs_check_acl(struct inode *inode, int mask, unsigned int flags)
|
||||
{
|
||||
struct posix_acl *acl;
|
||||
int error = -EAGAIN; /* do regular unix permission checks by default */
|
||||
|
||||
if (flags & IPERM_FLAG_RCU)
|
||||
return -ECHILD;
|
||||
|
||||
acl = reiserfs_get_acl(inode, ACL_TYPE_ACCESS);
|
||||
|
||||
if (acl) {
|
||||
|
@ -951,8 +954,10 @@ static int xattr_mount_check(struct super_block *s)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int reiserfs_permission(struct inode *inode, int mask)
|
||||
int reiserfs_permission(struct inode *inode, int mask, unsigned int flags)
|
||||
{
|
||||
if (flags & IPERM_FLAG_RCU)
|
||||
return -ECHILD;
|
||||
/*
|
||||
* We don't do permission checks on the internal objects.
|
||||
* Permissions are determined by the "owning" object.
|
||||
|
@ -965,9 +970,10 @@ int reiserfs_permission(struct inode *inode, int mask)
|
|||
* Stat data v1 doesn't support ACLs.
|
||||
*/
|
||||
if (get_inode_sd_version(inode) != STAT_DATA_V1)
|
||||
return generic_permission(inode, mask, reiserfs_check_acl);
|
||||
return generic_permission(inode, mask, flags,
|
||||
reiserfs_check_acl);
|
||||
#endif
|
||||
return generic_permission(inode, mask, NULL);
|
||||
return generic_permission(inode, mask, flags, NULL);
|
||||
}
|
||||
|
||||
static int xattr_hide_revalidate(struct dentry *dentry, struct nameidata *nd)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue