diff options
Diffstat (limited to 'fs/configfs/mount.c')
| -rw-r--r-- | fs/configfs/mount.c | 36 | 
1 files changed, 17 insertions, 19 deletions
diff --git a/fs/configfs/mount.c b/fs/configfs/mount.c index ecc62178bed..276e15cafd5 100644 --- a/fs/configfs/mount.c +++ b/fs/configfs/mount.c @@ -143,28 +143,26 @@ static int __init configfs_init(void)  		goto out;  	config_kobj = kobject_create_and_add("config", kernel_kobj); -	if (!config_kobj) { -		kmem_cache_destroy(configfs_dir_cachep); -		configfs_dir_cachep = NULL; -		goto out; -	} +	if (!config_kobj) +		goto out2; + +	err = configfs_inode_init(); +	if (err) +		goto out3;  	err = register_filesystem(&configfs_fs_type); -	if (err) { -		printk(KERN_ERR "configfs: Unable to register filesystem!\n"); -		kobject_put(config_kobj); -		kmem_cache_destroy(configfs_dir_cachep); -		configfs_dir_cachep = NULL; -		goto out; -	} +	if (err) +		goto out4; -	err = configfs_inode_init(); -	if (err) { -		unregister_filesystem(&configfs_fs_type); -		kobject_put(config_kobj); -		kmem_cache_destroy(configfs_dir_cachep); -		configfs_dir_cachep = NULL; -	} +	return 0; +out4: +	printk(KERN_ERR "configfs: Unable to register filesystem!\n"); +	configfs_inode_exit(); +out3: +	kobject_put(config_kobj); +out2: +	kmem_cache_destroy(configfs_dir_cachep); +	configfs_dir_cachep = NULL;  out:  	return err;  }  |