mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 11:11:45 -04:00
fs: take the ACL checks to common code
Replace the ->check_acl method with a ->get_acl method that simply reads an ACL from disk after having a cache miss. This means we can replace the ACL checking boilerplate code with a single implementation in namei.c. Signed-off-by: Christoph Hellwig <[email protected]> Signed-off-by: Al Viro <[email protected]>
This commit is contained in:
parent
edde854e8b
commit
4e34e719e4
52 changed files with 92 additions and 294 deletions
18
fs/jfs/acl.c
18
fs/jfs/acl.c
|
|
@ -27,7 +27,7 @@
|
|||
#include "jfs_xattr.h"
|
||||
#include "jfs_acl.h"
|
||||
|
||||
static struct posix_acl *jfs_get_acl(struct inode *inode, int type)
|
||||
struct posix_acl *jfs_get_acl(struct inode *inode, int type)
|
||||
{
|
||||
struct posix_acl *acl;
|
||||
char *ea_name;
|
||||
|
|
@ -114,22 +114,6 @@ out:
|
|||
return rc;
|
||||
}
|
||||
|
||||
int jfs_check_acl(struct inode *inode, int mask)
|
||||
{
|
||||
struct posix_acl *acl;
|
||||
|
||||
acl = jfs_get_acl(inode, ACL_TYPE_ACCESS);
|
||||
if (IS_ERR(acl))
|
||||
return PTR_ERR(acl);
|
||||
if (acl) {
|
||||
int error = posix_acl_permission(inode, acl, mask);
|
||||
posix_acl_release(acl);
|
||||
return error;
|
||||
}
|
||||
|
||||
return -EAGAIN;
|
||||
}
|
||||
|
||||
int jfs_init_acl(tid_t tid, struct inode *inode, struct inode *dir)
|
||||
{
|
||||
struct posix_acl *acl = NULL;
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ const struct inode_operations jfs_file_inode_operations = {
|
|||
.removexattr = jfs_removexattr,
|
||||
.setattr = jfs_setattr,
|
||||
#ifdef CONFIG_JFS_POSIX_ACL
|
||||
.check_acl = jfs_check_acl,
|
||||
.get_acl = jfs_get_acl,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
#ifdef CONFIG_JFS_POSIX_ACL
|
||||
|
||||
int jfs_check_acl(struct inode *, int);
|
||||
struct posix_acl *jfs_get_acl(struct inode *inode, int type);
|
||||
int jfs_init_acl(tid_t, struct inode *, struct inode *);
|
||||
int jfs_acl_chmod(struct inode *inode);
|
||||
|
||||
|
|
|
|||
|
|
@ -1537,7 +1537,7 @@ const struct inode_operations jfs_dir_inode_operations = {
|
|||
.removexattr = jfs_removexattr,
|
||||
.setattr = jfs_setattr,
|
||||
#ifdef CONFIG_JFS_POSIX_ACL
|
||||
.check_acl = jfs_check_acl,
|
||||
.get_acl = jfs_get_acl,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue