Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux...
[firefly-linux-kernel-4.4.55.git] / fs / ecryptfs / main.c
index 26fe405a57637864c02be1a10fd8f0b6b94e69b2..fc4a3a22464182ebb80e130c2d2013e102905776 100644 (file)
@@ -484,18 +484,12 @@ static int ecryptfs_read_super(struct super_block *sb, const char *dev_name)
        struct vfsmount *lower_mnt;
 
        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) {
                ecryptfs_printk(KERN_WARNING, "path_lookup() failed\n");
-               goto out_free;
+               goto out;
        }
        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;
        ecryptfs_set_superblock_lower(sb, lower_root->d_sb);
        sb->s_maxbytes = lower_root->d_sb->s_maxbytes;
@@ -651,6 +645,11 @@ static struct ecryptfs_cache_info {
                .name = "ecryptfs_lower_page_cache",
                .size = PAGE_CACHE_SIZE,
        },
+       {
+               .cache = &ecryptfs_key_record_cache,
+               .name = "ecryptfs_key_record_cache",
+               .size = sizeof(struct ecryptfs_key_record),
+       },
 };
 
 static void ecryptfs_free_kmem_caches(void)