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

Commit 82b16528 authored by Dmitriy Monakhov's avatar Dmitriy Monakhov Committed by Linus Torvalds
Browse files

[PATCH] ecryptfs: lower root result must be adirectory



- Currently after path_lookup succeed we dot't have any guarantie what
  it is DIR. This must be explicitly demanded.
- path_lookup can't return negative dentry, So inode check is useless.

Signed-off-by: default avatarDmitriy Monakhov <dmonakhov@openvz.org>
Acked-by: default avatarMichael Halcrow <mhalcrow@us.ibm.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent a5f5e43e
Loading
Loading
Loading
Loading
+1 −7
Original line number Original line Diff line number Diff line
@@ -484,18 +484,12 @@ static int ecryptfs_read_super(struct super_block *sb, const char *dev_name)
	struct vfsmount *lower_mnt;
	struct vfsmount *lower_mnt;


	memset(&nd, 0, sizeof(struct nameidata));
	memset(&nd, 0, sizeof(struct nameidata));
	rc = path_lookup(dev_name, LOOKUP_FOLLOW, &nd);
	rc = path_lookup(dev_name, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &nd);
	if (rc) {
	if (rc) {
		ecryptfs_printk(KERN_WARNING, "path_lookup() failed\n");
		ecryptfs_printk(KERN_WARNING, "path_lookup() failed\n");
		goto out;
		goto out;
	}
	}
	lower_root = nd.dentry;
	lower_root = nd.dentry;
	if (!lower_root->d_inode) {
		ecryptfs_printk(KERN_WARNING,
				"No directory to interpose on\n");
		rc = -ENOENT;
		goto out_free;
	}
	lower_mnt = nd.mnt;
	lower_mnt = nd.mnt;
	ecryptfs_set_superblock_lower(sb, lower_root->d_sb);
	ecryptfs_set_superblock_lower(sb, lower_root->d_sb);
	sb->s_maxbytes = lower_root->d_sb->s_maxbytes;
	sb->s_maxbytes = lower_root->d_sb->s_maxbytes;