Skip to content

Commit

Permalink
Merge branch 'lookup-permissions-cleanup'
Browse files Browse the repository at this point in the history
* lookup-permissions-cleanup:
  jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()'
  ext[234]: move over to 'check_acl' permission model
  shmfs: use 'check_acl' instead of 'permission'
  Make 'check_acl()' a first-class filesystem op
  Simplify exec_permission_lite(), part 3
  Simplify exec_permission_lite() further
  Simplify exec_permission_lite() logic
  Do not call 'ima_path_check()' for each path component
  • Loading branch information
Linus Torvalds committed Sep 10, 2009
2 parents 752015d + 18f4c64 commit 526b678
Showing 27 changed files with 79 additions and 123 deletions.
8 changes: 1 addition & 7 deletions fs/ext2/acl.c
Original file line number Diff line number Diff line change
@@ -230,7 +230,7 @@ ext2_set_acl(struct inode *inode, int type, struct posix_acl *acl)
return error;
}

static int
int
ext2_check_acl(struct inode *inode, int mask)
{
struct posix_acl *acl = ext2_get_acl(inode, ACL_TYPE_ACCESS);
@@ -246,12 +246,6 @@ ext2_check_acl(struct inode *inode, int mask)
return -EAGAIN;
}

int
ext2_permission(struct inode *inode, int mask)
{
return generic_permission(inode, mask, ext2_check_acl);
}

/*
* Initialize the ACLs of a new inode. Called from ext2_new_inode.
*
4 changes: 2 additions & 2 deletions fs/ext2/acl.h
Original file line number Diff line number Diff line change
@@ -54,13 +54,13 @@ static inline int ext2_acl_count(size_t size)
#ifdef CONFIG_EXT2_FS_POSIX_ACL

/* acl.c */
extern int ext2_permission (struct inode *, int);
extern int ext2_check_acl (struct inode *, int);
extern int ext2_acl_chmod (struct inode *);
extern int ext2_init_acl (struct inode *, struct inode *);

#else
#include <linux/sched.h>
#define ext2_permission NULL
#define ext2_check_acl NULL
#define ext2_get_acl NULL
#define ext2_set_acl NULL

2 changes: 1 addition & 1 deletion fs/ext2/file.c
Original file line number Diff line number Diff line change
@@ -85,6 +85,6 @@ const struct inode_operations ext2_file_inode_operations = {
.removexattr = generic_removexattr,
#endif
.setattr = ext2_setattr,
.permission = ext2_permission,
.check_acl = ext2_check_acl,
.fiemap = ext2_fiemap,
};
4 changes: 2 additions & 2 deletions fs/ext2/namei.c
Original file line number Diff line number Diff line change
@@ -400,7 +400,7 @@ const struct inode_operations ext2_dir_inode_operations = {
.removexattr = generic_removexattr,
#endif
.setattr = ext2_setattr,
.permission = ext2_permission,
.check_acl = ext2_check_acl,
};

const struct inode_operations ext2_special_inode_operations = {
@@ -411,5 +411,5 @@ const struct inode_operations ext2_special_inode_operations = {
.removexattr = generic_removexattr,
#endif
.setattr = ext2_setattr,
.permission = ext2_permission,
.check_acl = ext2_check_acl,
};
8 changes: 1 addition & 7 deletions fs/ext3/acl.c
Original file line number Diff line number Diff line change
@@ -238,7 +238,7 @@ ext3_set_acl(handle_t *handle, struct inode *inode, int type,
return error;
}

static int
int
ext3_check_acl(struct inode *inode, int mask)
{
struct posix_acl *acl = ext3_get_acl(inode, ACL_TYPE_ACCESS);
@@ -254,12 +254,6 @@ ext3_check_acl(struct inode *inode, int mask)
return -EAGAIN;
}

int
ext3_permission(struct inode *inode, int mask)
{
return generic_permission(inode, mask, ext3_check_acl);
}

/*
* Initialize the ACLs of a new inode. Called from ext3_new_inode.
*
4 changes: 2 additions & 2 deletions fs/ext3/acl.h
Original file line number Diff line number Diff line change
@@ -54,13 +54,13 @@ static inline int ext3_acl_count(size_t size)
#ifdef CONFIG_EXT3_FS_POSIX_ACL

/* acl.c */
extern int ext3_permission (struct inode *, int);
extern int ext3_check_acl (struct inode *, int);
extern int ext3_acl_chmod (struct inode *);
extern int ext3_init_acl (handle_t *, struct inode *, struct inode *);

#else /* CONFIG_EXT3_FS_POSIX_ACL */
#include <linux/sched.h>
#define ext3_permission NULL
#define ext3_check_acl NULL

static inline int
ext3_acl_chmod(struct inode *inode)
2 changes: 1 addition & 1 deletion fs/ext3/file.c
Original file line number Diff line number Diff line change
@@ -137,7 +137,7 @@ const struct inode_operations ext3_file_inode_operations = {
.listxattr = ext3_listxattr,
.removexattr = generic_removexattr,
#endif
.permission = ext3_permission,
.check_acl = ext3_check_acl,
.fiemap = ext3_fiemap,
};

4 changes: 2 additions & 2 deletions fs/ext3/namei.c
Original file line number Diff line number Diff line change
@@ -2445,7 +2445,7 @@ const struct inode_operations ext3_dir_inode_operations = {
.listxattr = ext3_listxattr,
.removexattr = generic_removexattr,
#endif
.permission = ext3_permission,
.check_acl = ext3_check_acl,
};

const struct inode_operations ext3_special_inode_operations = {
@@ -2456,5 +2456,5 @@ const struct inode_operations ext3_special_inode_operations = {
.listxattr = ext3_listxattr,
.removexattr = generic_removexattr,
#endif
.permission = ext3_permission,
.check_acl = ext3_check_acl,
};
8 changes: 1 addition & 7 deletions fs/ext4/acl.c
Original file line number Diff line number Diff line change
@@ -236,7 +236,7 @@ ext4_set_acl(handle_t *handle, struct inode *inode, int type,
return error;
}

static int
int
ext4_check_acl(struct inode *inode, int mask)
{
struct posix_acl *acl = ext4_get_acl(inode, ACL_TYPE_ACCESS);
@@ -252,12 +252,6 @@ ext4_check_acl(struct inode *inode, int mask)
return -EAGAIN;
}

int
ext4_permission(struct inode *inode, int mask)
{
return generic_permission(inode, mask, ext4_check_acl);
}

/*
* Initialize the ACLs of a new inode. Called from ext4_new_inode.
*
4 changes: 2 additions & 2 deletions fs/ext4/acl.h
Original file line number Diff line number Diff line change
@@ -54,13 +54,13 @@ static inline int ext4_acl_count(size_t size)
#ifdef CONFIG_EXT4_FS_POSIX_ACL

/* acl.c */
extern int ext4_permission(struct inode *, int);
extern int ext4_check_acl(struct inode *, int);
extern int ext4_acl_chmod(struct inode *);
extern int ext4_init_acl(handle_t *, struct inode *, struct inode *);

#else /* CONFIG_EXT4_FS_POSIX_ACL */
#include <linux/sched.h>
#define ext4_permission NULL
#define ext4_check_acl NULL

static inline int
ext4_acl_chmod(struct inode *inode)
2 changes: 1 addition & 1 deletion fs/ext4/file.c
Original file line number Diff line number Diff line change
@@ -207,7 +207,7 @@ const struct inode_operations ext4_file_inode_operations = {
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
#endif
.permission = ext4_permission,
.check_acl = ext4_check_acl,
.fallocate = ext4_fallocate,
.fiemap = ext4_fiemap,
};
4 changes: 2 additions & 2 deletions fs/ext4/namei.c
Original file line number Diff line number Diff line change
@@ -2536,7 +2536,7 @@ const struct inode_operations ext4_dir_inode_operations = {
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
#endif
.permission = ext4_permission,
.check_acl = ext4_check_acl,
.fiemap = ext4_fiemap,
};

@@ -2548,5 +2548,5 @@ const struct inode_operations ext4_special_inode_operations = {
.listxattr = ext4_listxattr,
.removexattr = generic_removexattr,
#endif
.permission = ext4_permission,
.check_acl = ext4_check_acl,
};
7 changes: 1 addition & 6 deletions fs/jffs2/acl.c
Original file line number Diff line number Diff line change
@@ -258,7 +258,7 @@ static int jffs2_set_acl(struct inode *inode, int type, struct posix_acl *acl)
return rc;
}

static int jffs2_check_acl(struct inode *inode, int mask)
int jffs2_check_acl(struct inode *inode, int mask)
{
struct posix_acl *acl;
int rc;
@@ -274,11 +274,6 @@ static int jffs2_check_acl(struct inode *inode, int mask)
return -EAGAIN;
}

int jffs2_permission(struct inode *inode, int mask)
{
return generic_permission(inode, mask, jffs2_check_acl);
}

int jffs2_init_acl_pre(struct inode *dir_i, struct inode *inode, int *i_mode)
{
struct posix_acl *acl, *clone;
4 changes: 2 additions & 2 deletions fs/jffs2/acl.h
Original file line number Diff line number Diff line change
@@ -26,7 +26,7 @@ struct jffs2_acl_header {

#ifdef CONFIG_JFFS2_FS_POSIX_ACL

extern int jffs2_permission(struct inode *, int);
extern int jffs2_check_acl(struct inode *, int);
extern int jffs2_acl_chmod(struct inode *);
extern int jffs2_init_acl_pre(struct inode *, struct inode *, int *);
extern int jffs2_init_acl_post(struct inode *);
@@ -36,7 +36,7 @@ extern struct xattr_handler jffs2_acl_default_xattr_handler;

#else

#define jffs2_permission (NULL)
#define jffs2_check_acl (NULL)
#define jffs2_acl_chmod(inode) (0)
#define jffs2_init_acl_pre(dir_i,inode,mode) (0)
#define jffs2_init_acl_post(inode) (0)
2 changes: 1 addition & 1 deletion fs/jffs2/dir.c
Original file line number Diff line number Diff line change
@@ -55,7 +55,7 @@ const struct inode_operations jffs2_dir_inode_operations =
.rmdir = jffs2_rmdir,
.mknod = jffs2_mknod,
.rename = jffs2_rename,
.permission = jffs2_permission,
.check_acl = jffs2_check_acl,
.setattr = jffs2_setattr,
.setxattr = jffs2_setxattr,
.getxattr = jffs2_getxattr,
2 changes: 1 addition & 1 deletion fs/jffs2/file.c
Original file line number Diff line number Diff line change
@@ -56,7 +56,7 @@ const struct file_operations jffs2_file_operations =

const struct inode_operations jffs2_file_inode_operations =
{
.permission = jffs2_permission,
.check_acl = jffs2_check_acl,
.setattr = jffs2_setattr,
.setxattr = jffs2_setxattr,
.getxattr = jffs2_getxattr,
2 changes: 1 addition & 1 deletion fs/jffs2/symlink.c
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ const struct inode_operations jffs2_symlink_inode_operations =
{
.readlink = generic_readlink,
.follow_link = jffs2_follow_link,
.permission = jffs2_permission,
.check_acl = jffs2_check_acl,
.setattr = jffs2_setattr,
.setxattr = jffs2_setxattr,
.getxattr = jffs2_getxattr,
7 changes: 1 addition & 6 deletions fs/jfs/acl.c
Original file line number Diff line number Diff line change
@@ -114,7 +114,7 @@ static int jfs_set_acl(tid_t tid, struct inode *inode, int type,
return rc;
}

static int jfs_check_acl(struct inode *inode, int mask)
int jfs_check_acl(struct inode *inode, int mask)
{
struct posix_acl *acl = jfs_get_acl(inode, ACL_TYPE_ACCESS);

@@ -129,11 +129,6 @@ static int jfs_check_acl(struct inode *inode, int mask)
return -EAGAIN;
}

int jfs_permission(struct inode *inode, int mask)
{
return generic_permission(inode, mask, jfs_check_acl);
}

int jfs_init_acl(tid_t tid, struct inode *inode, struct inode *dir)
{
struct posix_acl *acl = NULL;
2 changes: 1 addition & 1 deletion fs/jfs/file.c
Original file line number Diff line number Diff line change
@@ -96,7 +96,7 @@ const struct inode_operations jfs_file_inode_operations = {
.removexattr = jfs_removexattr,
#ifdef CONFIG_JFS_POSIX_ACL
.setattr = jfs_setattr,
.permission = jfs_permission,
.check_acl = jfs_check_acl,
#endif
};

2 changes: 1 addition & 1 deletion fs/jfs/jfs_acl.h
Original file line number Diff line number Diff line change
@@ -20,7 +20,7 @@

#ifdef CONFIG_JFS_POSIX_ACL

int jfs_permission(struct inode *, int);
int jfs_check_acl(struct inode *, int);
int jfs_init_acl(tid_t, struct inode *, struct inode *);
int jfs_setattr(struct dentry *, struct iattr *);

2 changes: 1 addition & 1 deletion fs/jfs/namei.c
Original file line number Diff line number Diff line change
@@ -1543,7 +1543,7 @@ const struct inode_operations jfs_dir_inode_operations = {
.removexattr = jfs_removexattr,
#ifdef CONFIG_JFS_POSIX_ACL
.setattr = jfs_setattr,
.permission = jfs_permission,
.check_acl = jfs_check_acl,
#endif
};

Loading

0 comments on commit 526b678

Please sign in to comment.