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

Commit 18f4c644 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

jffs2/jfs/xfs: switch over to 'check_acl' rather than 'permission()'



This avoids an indirect call in the VFS for each path component lookup.

Well, at least as long as you own the directory in question, and the ACL
check is unnecessary.

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 1d5ccd1c
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -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;
+2 −2
Original line number Diff line number Diff line
@@ -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)
+1 −1
Original line number Diff line number Diff line
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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,
Loading