ext[234]: move over to 'check_acl' permission model
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 28 Aug 2009 19:12:24 +0000 (12:12 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 8 Sep 2009 18:09:04 +0000 (11:09 -0700)
Don't implement per-filesystem 'extX_permission()' functions that have
to be called for every path component operation, and instead just expose
the actual ACL checking so that the VFS layer can now do it for us.

Reviewed-by: James Morris <jmorris@namei.org>
Acked-by: Serge Hallyn <serue@us.ibm.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
12 files changed:
fs/ext2/acl.c
fs/ext2/acl.h
fs/ext2/file.c
fs/ext2/namei.c
fs/ext3/acl.c
fs/ext3/acl.h
fs/ext3/file.c
fs/ext3/namei.c
fs/ext4/acl.c
fs/ext4/acl.h
fs/ext4/file.c
fs/ext4/namei.c

index d636e1297cad71e13c6cc6b24e516369bde9bd3c..a63d44256a70eb7412114ffced765c548ad2b7ab 100644 (file)
@@ -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.
  *
index ecefe478898f9c67df951ce6c9283a15d1346be5..3ff6cbb9ac4486e2c6bc4e7b0ca83485ab01fd1f 100644 (file)
@@ -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
 
index 2b9e47dc9222988d512644b33547c6e6ead6cd5d..a2f3afd1a1c1a32ec18f3c0e1385dcb38a9a9ad7 100644 (file)
@@ -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,
 };
index 78d9b925fc94dc7e35d1abe920dcdeeaff92bead..23701f289e985b94e9a9d4024b70a361917d3b25 100644 (file)
@@ -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,
 };
index e167bae37ef02eb572b3c660a3a412c2bace58e2..c9b0df376b5f751050c616a96ed0c79c697c7008 100644 (file)
@@ -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.
  *
index 07d15a3a59696caceccd7dd89f8eab7ac6a78719..597334626de93aee68631305d98a823e815058c4 100644 (file)
@@ -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)
index 5b49704b231b27b53a8d52dc15a1c62118f6124f..299253214789f2ee135209845932a93d707d6e3a 100644 (file)
@@ -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,
 };
 
index 6ff7b9730234bd97f2a67a1d01b08692630549ba..aad6400c9b77e17010b3a9588ea5a19e5d0b4bdf 100644 (file)
@@ -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,
 };
index f6d8967149ca116602ce77fb35c6762dbb179456..0df88b2a69b0e4b5a7d90c5762447414f1e875e9 100644 (file)
@@ -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.
  *
index 949789d2bba66b47805cc9adc008afdd7f150ca5..9d843d5deac402593b8b557e27c6ed25aafe401d 100644 (file)
@@ -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)
index 3f1873fef1c64240db9b2b32cb4909ce4349d088..27f3c5354c0e2b06ee848f24a18b462ef8050c99 100644 (file)
@@ -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,
 };
index de04013d16ffd3825a28cb21dc92995e3818226a..114abe5d2c1df437fb173f00abc78baed338ba3d 100644 (file)
@@ -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,
 };