diff options
Diffstat (limited to 'fs/ecryptfs/main.c')
| -rw-r--r-- | fs/ecryptfs/main.c | 19 | 
1 files changed, 9 insertions, 10 deletions
| diff --git a/fs/ecryptfs/main.c b/fs/ecryptfs/main.c index b4a6befb1216..68954937a071 100644 --- a/fs/ecryptfs/main.c +++ b/fs/ecryptfs/main.c @@ -550,9 +550,8 @@ static struct dentry *ecryptfs_mount(struct file_system_type *fs_type, int flags  	if (IS_ERR(inode))  		goto out_free; -	s->s_root = d_alloc_root(inode); +	s->s_root = d_make_root(inode);  	if (!s->s_root) { -		iput(inode);  		rc = -ENOMEM;  		goto out_free;  	} @@ -795,15 +794,10 @@ static int __init ecryptfs_init(void)  		       "Failed to allocate one or more kmem_cache objects\n");  		goto out;  	} -	rc = register_filesystem(&ecryptfs_fs_type); -	if (rc) { -		printk(KERN_ERR "Failed to register filesystem\n"); -		goto out_free_kmem_caches; -	}  	rc = do_sysfs_registration();  	if (rc) {  		printk(KERN_ERR "sysfs registration failed\n"); -		goto out_unregister_filesystem; +		goto out_free_kmem_caches;  	}  	rc = ecryptfs_init_kthread();  	if (rc) { @@ -824,19 +818,24 @@ static int __init ecryptfs_init(void)  		       "rc = [%d]\n", rc);  		goto out_release_messaging;  	} +	rc = register_filesystem(&ecryptfs_fs_type); +	if (rc) { +		printk(KERN_ERR "Failed to register filesystem\n"); +		goto out_destroy_crypto; +	}  	if (ecryptfs_verbosity > 0)  		printk(KERN_CRIT "eCryptfs verbosity set to %d. Secret values "  			"will be written to the syslog!\n", ecryptfs_verbosity);  	goto out; +out_destroy_crypto: +	ecryptfs_destroy_crypto();  out_release_messaging:  	ecryptfs_release_messaging();  out_destroy_kthread:  	ecryptfs_destroy_kthread();  out_do_sysfs_unregistration:  	do_sysfs_unregistration(); -out_unregister_filesystem: -	unregister_filesystem(&ecryptfs_fs_type);  out_free_kmem_caches:  	ecryptfs_free_kmem_caches();  out: | 
