diff --git a/fs/sysfs/mount.c b/fs/sysfs/mount.c index fcbe5e80aeeb..0c80f0379016 100644 --- a/fs/sysfs/mount.c +++ b/fs/sysfs/mount.c @@ -24,7 +24,6 @@ #include "sysfs.h" -static struct vfsmount *sysfs_mnt; struct kmem_cache *sysfs_dir_cachep; static const struct super_operations sysfs_ops = { @@ -153,34 +152,26 @@ static struct file_system_type sysfs_fs_type = { int __init sysfs_init(void) { - int err = -ENOMEM; + int err; sysfs_dir_cachep = kmem_cache_create("sysfs_dir_cache", sizeof(struct sysfs_dirent), 0, 0, NULL); if (!sysfs_dir_cachep) - goto out; + return -ENOMEM; err = sysfs_inode_init(); if (err) goto out_err; err = register_filesystem(&sysfs_fs_type); - if (!err) { - sysfs_mnt = kern_mount(&sysfs_fs_type); - if (IS_ERR(sysfs_mnt)) { - printk(KERN_ERR "sysfs: could not mount!\n"); - err = PTR_ERR(sysfs_mnt); - sysfs_mnt = NULL; - unregister_filesystem(&sysfs_fs_type); - goto out_err; - } - } else + if (err) goto out_err; -out: - return err; + + return 0; + out_err: kmem_cache_destroy(sysfs_dir_cachep); sysfs_dir_cachep = NULL; - goto out; + return err; }