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

Commit f419a2e3 authored by Al Viro's avatar Al Viro
Browse files

[PATCH] kill nameidata passing to permission(), rename to inode_permission()



Incidentally, the name that gives hundreds of false positives on grep
is not a good idea...

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent 30524472
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -830,7 +830,7 @@ int ecryptfs_truncate(struct dentry *dentry, loff_t new_length)
static int
ecryptfs_permission(struct inode *inode, int mask)
{
	return permission(ecryptfs_inode_to_lower(inode), mask, NULL);
	return inode_permission(ecryptfs_inode_to_lower(inode), mask);
}

/**
+9 −13
Original line number Diff line number Diff line
@@ -227,13 +227,9 @@ int generic_permission(struct inode *inode, int mask,
	return -EACCES;
}

int permission(struct inode *inode, int mask, struct nameidata *nd)
int inode_permission(struct inode *inode, int mask)
{
	int retval;
	struct vfsmount *mnt = NULL;

	if (nd)
		mnt = nd->path.mnt;

	if (mask & MAY_WRITE) {
		umode_t mode = inode->i_mode;
@@ -293,7 +289,7 @@ int permission(struct inode *inode, int mask, struct nameidata *nd)
 */
int vfs_permission(struct nameidata *nd, int mask)
{
	return permission(nd->path.dentry->d_inode, mask, nd);
	return inode_permission(nd->path.dentry->d_inode, mask);
}

/**
@@ -310,7 +306,7 @@ int vfs_permission(struct nameidata *nd, int mask)
 */
int file_permission(struct file *file, int mask)
{
	return permission(file->f_path.dentry->d_inode, mask, NULL);
	return inode_permission(file->f_path.dentry->d_inode, mask);
}

/*
@@ -1262,7 +1258,7 @@ static struct dentry *lookup_hash(struct nameidata *nd)
{
	int err;

	err = permission(nd->path.dentry->d_inode, MAY_EXEC, nd);
	err = inode_permission(nd->path.dentry->d_inode, MAY_EXEC);
	if (err)
		return ERR_PTR(err);
	return __lookup_hash(&nd->last, nd->path.dentry, nd);
@@ -1310,7 +1306,7 @@ struct dentry *lookup_one_len(const char *name, struct dentry *base, int len)
	if (err)
		return ERR_PTR(err);

	err = permission(base->d_inode, MAY_EXEC, NULL);
	err = inode_permission(base->d_inode, MAY_EXEC);
	if (err)
		return ERR_PTR(err);
	return __lookup_hash(&this, base, NULL);
@@ -1400,7 +1396,7 @@ static int may_delete(struct inode *dir,struct dentry *victim,int isdir)
	BUG_ON(victim->d_parent->d_inode != dir);
	audit_inode_child(victim->d_name.name, victim, dir);

	error = permission(dir,MAY_WRITE | MAY_EXEC, NULL);
	error = inode_permission(dir, MAY_WRITE | MAY_EXEC);
	if (error)
		return error;
	if (IS_APPEND(dir))
@@ -1437,7 +1433,7 @@ static inline int may_create(struct inode *dir, struct dentry *child,
		return -EEXIST;
	if (IS_DEADDIR(dir))
		return -ENOENT;
	return permission(dir,MAY_WRITE | MAY_EXEC, nd);
	return inode_permission(dir, MAY_WRITE | MAY_EXEC);
}

/* 
@@ -2543,7 +2539,7 @@ static int vfs_rename_dir(struct inode *old_dir, struct dentry *old_dentry,
	 * we'll need to flip '..'.
	 */
	if (new_dir != old_dir) {
		error = permission(old_dentry->d_inode, MAY_WRITE, NULL);
		error = inode_permission(old_dentry->d_inode, MAY_WRITE);
		if (error)
			return error;
	}
@@ -2897,7 +2893,7 @@ EXPORT_SYMBOL(page_symlink);
EXPORT_SYMBOL(page_symlink_inode_operations);
EXPORT_SYMBOL(path_lookup);
EXPORT_SYMBOL(vfs_path_lookup);
EXPORT_SYMBOL(permission);
EXPORT_SYMBOL(inode_permission);
EXPORT_SYMBOL(vfs_permission);
EXPORT_SYMBOL(file_permission);
EXPORT_SYMBOL(unlock_rename);
+1 −1
Original line number Diff line number Diff line
@@ -51,7 +51,7 @@ static int nfsd_acceptable(void *expv, struct dentry *dentry)
		/* make sure parents give x permission to user */
		int err;
		parent = dget_parent(tdentry);
		err = permission(parent->d_inode, MAY_EXEC, NULL);
		err = inode_permission(parent->d_inode, MAY_EXEC);
		if (err < 0) {
			dput(parent);
			break;
+2 −2
Original line number Diff line number Diff line
@@ -1953,12 +1953,12 @@ nfsd_permission(struct svc_rqst *rqstp, struct svc_export *exp,
		return 0;

	/* This assumes  NFSD_MAY_{READ,WRITE,EXEC} == MAY_{READ,WRITE,EXEC} */
	err = permission(inode, acc & (MAY_READ|MAY_WRITE|MAY_EXEC), NULL);
	err = inode_permission(inode, acc & (MAY_READ|MAY_WRITE|MAY_EXEC));

	/* Allow read access to binaries even when mode 111 */
	if (err == -EACCES && S_ISREG(inode->i_mode) &&
	    acc == (NFSD_MAY_READ | NFSD_MAY_OWNER_OVERRIDE))
		err = permission(inode, MAY_EXEC, NULL);
		err = inode_permission(inode, MAY_EXEC);

	return err? nfserrno(err) : 0;
}
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ static int utimes_common(struct path *path, struct timespec *times)
			goto mnt_drop_write_and_out;

		if (!is_owner_or_cap(inode)) {
			error = permission(inode, MAY_WRITE, NULL);
			error = inode_permission(inode, MAY_WRITE);
			if (error)
				goto mnt_drop_write_and_out;
		}
Loading