Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1d5ccd1c authored by Linus Torvalds's avatar Linus Torvalds
Browse files

ext[234]: move over to 'check_acl' permission model



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: default avatarJames Morris <jmorris@namei.org>
Acked-by: default avatarSerge Hallyn <serue@us.ibm.com>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 6d848a48
Loading
Loading
Loading
Loading
+1 −7
Original line number Original line Diff line number Diff line
@@ -230,7 +230,7 @@ ext2_set_acl(struct inode *inode, int type, struct posix_acl *acl)
	return error;
	return error;
}
}


static int
int
ext2_check_acl(struct inode *inode, int mask)
ext2_check_acl(struct inode *inode, int mask)
{
{
	struct posix_acl *acl = ext2_get_acl(inode, ACL_TYPE_ACCESS);
	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;
	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.
 * Initialize the ACLs of a new inode. Called from ext2_new_inode.
 *
 *
+2 −2
Original line number Original line Diff line number Diff line
@@ -54,13 +54,13 @@ static inline int ext2_acl_count(size_t size)
#ifdef CONFIG_EXT2_FS_POSIX_ACL
#ifdef CONFIG_EXT2_FS_POSIX_ACL


/* acl.c */
/* 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_acl_chmod (struct inode *);
extern int ext2_init_acl (struct inode *, struct inode *);
extern int ext2_init_acl (struct inode *, struct inode *);


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


+1 −1
Original line number Original line Diff line number Diff line
@@ -85,6 +85,6 @@ const struct inode_operations ext2_file_inode_operations = {
	.removexattr	= generic_removexattr,
	.removexattr	= generic_removexattr,
#endif
#endif
	.setattr	= ext2_setattr,
	.setattr	= ext2_setattr,
	.permission	= ext2_permission,
	.check_acl	= ext2_check_acl,
	.fiemap		= ext2_fiemap,
	.fiemap		= ext2_fiemap,
};
};
+2 −2
Original line number Original line Diff line number Diff line
@@ -400,7 +400,7 @@ const struct inode_operations ext2_dir_inode_operations = {
	.removexattr	= generic_removexattr,
	.removexattr	= generic_removexattr,
#endif
#endif
	.setattr	= ext2_setattr,
	.setattr	= ext2_setattr,
	.permission	= ext2_permission,
	.check_acl	= ext2_check_acl,
};
};


const struct inode_operations ext2_special_inode_operations = {
const struct inode_operations ext2_special_inode_operations = {
@@ -411,5 +411,5 @@ const struct inode_operations ext2_special_inode_operations = {
	.removexattr	= generic_removexattr,
	.removexattr	= generic_removexattr,
#endif
#endif
	.setattr	= ext2_setattr,
	.setattr	= ext2_setattr,
	.permission	= ext2_permission,
	.check_acl	= ext2_check_acl,
};
};
+1 −7
Original line number Original line Diff line number Diff line
@@ -238,7 +238,7 @@ ext3_set_acl(handle_t *handle, struct inode *inode, int type,
	return error;
	return error;
}
}


static int
int
ext3_check_acl(struct inode *inode, int mask)
ext3_check_acl(struct inode *inode, int mask)
{
{
	struct posix_acl *acl = ext3_get_acl(inode, ACL_TYPE_ACCESS);
	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;
	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.
 * Initialize the ACLs of a new inode. Called from ext3_new_inode.
 *
 *
Loading