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

Commit 36698206 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6:
  devcgroup_inode_permission: take "is it a device node" checks to inlined wrapper
  fix comment in generic_permission()
  kill obsolete comment for follow_down()
  proc_sys_permission() is OK in RCU mode
  reiserfs_permission() doesn't need to bail out in RCU mode
  proc_fd_permission() is doesn't need to bail out in RCU mode
  nilfs2_permission() doesn't need to bail out in RCU mode
  logfs doesn't need ->permission() at all
  coda_ioctl_permission() is safe in RCU mode
  cifs_permission() doesn't need to bail out in RCU mode
  bad_inode_permission() is safe from RCU mode
  ubifs: dereferencing an ERR_PTR in ubifs_mount()
parents ef46222e 482e0cd3
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -231,9 +231,6 @@ static int bad_inode_readlink(struct dentry *dentry, char __user *buffer,

static int bad_inode_permission(struct inode *inode, int mask, unsigned int flags)
{
	if (flags & IPERM_FLAG_RCU)
		return -ECHILD;

	return -EIO;
}

+0 −3
Original line number Diff line number Diff line
@@ -257,9 +257,6 @@ static int cifs_permission(struct inode *inode, int mask, unsigned int flags)
{
	struct cifs_sb_info *cifs_sb;

	if (flags & IPERM_FLAG_RCU)
		return -ECHILD;

	cifs_sb = CIFS_SB(inode->i_sb);

	if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_NO_PERM) {
+0 −2
Original line number Diff line number Diff line
@@ -43,8 +43,6 @@ const struct file_operations coda_ioctl_operations = {
/* the coda pioctl inode ops */
static int coda_ioctl_permission(struct inode *inode, int mask, unsigned int flags)
{
	if (flags & IPERM_FLAG_RCU)
		return -ECHILD;
	return (mask & MAY_EXEC) ? -EACCES : 0;
}

+0 −8
Original line number Diff line number Diff line
@@ -555,13 +555,6 @@ static int logfs_symlink(struct inode *dir, struct dentry *dentry,
	return __logfs_create(dir, dentry, inode, target, destlen);
}

static int logfs_permission(struct inode *inode, int mask, unsigned int flags)
{
	if (flags & IPERM_FLAG_RCU)
		return -ECHILD;
	return generic_permission(inode, mask, flags, NULL);
}

static int logfs_link(struct dentry *old_dentry, struct inode *dir,
		struct dentry *dentry)
{
@@ -820,7 +813,6 @@ const struct inode_operations logfs_dir_iops = {
	.mknod		= logfs_mknod,
	.rename		= logfs_rename,
	.rmdir		= logfs_rmdir,
	.permission	= logfs_permission,
	.symlink	= logfs_symlink,
	.unlink		= logfs_unlink,
};
+2 −4
Original line number Diff line number Diff line
@@ -238,7 +238,8 @@ int generic_permission(struct inode *inode, int mask, unsigned int flags,

	/*
	 * Read/write DACs are always overridable.
	 * Executable DACs are overridable if at least one exec bit is set.
	 * Executable DACs are overridable for all directories and
	 * for non-directories that have least one exec bit set.
	 */
	if (!(mask & MAY_EXEC) || execute_ok(inode))
		if (ns_capable(inode_userns(inode), CAP_DAC_OVERRIDE))
@@ -1011,9 +1012,6 @@ failed:
 * Follow down to the covering mount currently visible to userspace.  At each
 * point, the filesystem owning that dentry may be queried as to whether the
 * caller is permitted to proceed or not.
 *
 * Care must be taken as namespace_sem may be held (indicated by mounting_here
 * being true).
 */
int follow_down(struct path *path)
{
Loading