forked from Minki/linux
sysfs: Create mountpoints with sysfs_create_mount_point
This allows for better documentation in the code and it allows for a simpler and fully correct version of fs_fully_visible to be written. The mount points converted and their filesystems are: /sys/hypervisor/s390/ s390_hypfs /sys/kernel/config/ configfs /sys/kernel/debug/ debugfs /sys/firmware/efi/efivars/ efivarfs /sys/fs/fuse/connections/ fusectl /sys/fs/pstore/ pstore /sys/kernel/tracing/ tracefs /sys/fs/cgroup/ cgroup /sys/kernel/security/ securityfs /sys/fs/selinux/ selinuxfs /sys/fs/smackfs/ smackfs Cc: stable@vger.kernel.org Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: "Eric W. Biederman" <ebiederm@xmission.com>
This commit is contained in:
parent
87d2846fcf
commit
f9bb48825a
@ -456,8 +456,6 @@ static const struct super_operations hypfs_s_ops = {
|
||||
.show_options = hypfs_show_options,
|
||||
};
|
||||
|
||||
static struct kobject *s390_kobj;
|
||||
|
||||
static int __init hypfs_init(void)
|
||||
{
|
||||
int rc;
|
||||
@ -481,18 +479,16 @@ static int __init hypfs_init(void)
|
||||
rc = -ENODATA;
|
||||
goto fail_hypfs_sprp_exit;
|
||||
}
|
||||
s390_kobj = kobject_create_and_add("s390", hypervisor_kobj);
|
||||
if (!s390_kobj) {
|
||||
rc = -ENOMEM;
|
||||
rc = sysfs_create_mount_point(hypervisor_kobj, "s390");
|
||||
if (rc)
|
||||
goto fail_hypfs_diag0c_exit;
|
||||
}
|
||||
rc = register_filesystem(&hypfs_type);
|
||||
if (rc)
|
||||
goto fail_filesystem;
|
||||
return 0;
|
||||
|
||||
fail_filesystem:
|
||||
kobject_put(s390_kobj);
|
||||
sysfs_remove_mount_point(hypervisor_kobj, "s390");
|
||||
fail_hypfs_diag0c_exit:
|
||||
hypfs_diag0c_exit();
|
||||
fail_hypfs_sprp_exit:
|
||||
@ -510,7 +506,7 @@ fail_dbfs_exit:
|
||||
static void __exit hypfs_exit(void)
|
||||
{
|
||||
unregister_filesystem(&hypfs_type);
|
||||
kobject_put(s390_kobj);
|
||||
sysfs_remove_mount_point(hypervisor_kobj, "s390");
|
||||
hypfs_diag0c_exit();
|
||||
hypfs_sprp_exit();
|
||||
hypfs_vm_exit();
|
||||
|
@ -65,7 +65,6 @@ static int __init parse_efi_cmdline(char *str)
|
||||
early_param("efi", parse_efi_cmdline);
|
||||
|
||||
static struct kobject *efi_kobj;
|
||||
static struct kobject *efivars_kobj;
|
||||
|
||||
/*
|
||||
* Let's not leave out systab information that snuck into
|
||||
@ -212,10 +211,9 @@ static int __init efisubsys_init(void)
|
||||
goto err_remove_group;
|
||||
|
||||
/* and the standard mountpoint for efivarfs */
|
||||
efivars_kobj = kobject_create_and_add("efivars", efi_kobj);
|
||||
if (!efivars_kobj) {
|
||||
error = sysfs_create_mount_point(efi_kobj, "efivars");
|
||||
if (error) {
|
||||
pr_err("efivars: Subsystem registration failed.\n");
|
||||
error = -ENOMEM;
|
||||
goto err_remove_group;
|
||||
}
|
||||
|
||||
|
@ -129,8 +129,6 @@ void configfs_release_fs(void)
|
||||
}
|
||||
|
||||
|
||||
static struct kobject *config_kobj;
|
||||
|
||||
static int __init configfs_init(void)
|
||||
{
|
||||
int err = -ENOMEM;
|
||||
@ -141,8 +139,8 @@ static int __init configfs_init(void)
|
||||
if (!configfs_dir_cachep)
|
||||
goto out;
|
||||
|
||||
config_kobj = kobject_create_and_add("config", kernel_kobj);
|
||||
if (!config_kobj)
|
||||
err = sysfs_create_mount_point(kernel_kobj, "config");
|
||||
if (err)
|
||||
goto out2;
|
||||
|
||||
err = register_filesystem(&configfs_fs_type);
|
||||
@ -152,7 +150,7 @@ static int __init configfs_init(void)
|
||||
return 0;
|
||||
out3:
|
||||
pr_err("Unable to register filesystem!\n");
|
||||
kobject_put(config_kobj);
|
||||
sysfs_remove_mount_point(kernel_kobj, "config");
|
||||
out2:
|
||||
kmem_cache_destroy(configfs_dir_cachep);
|
||||
configfs_dir_cachep = NULL;
|
||||
@ -163,7 +161,7 @@ out:
|
||||
static void __exit configfs_exit(void)
|
||||
{
|
||||
unregister_filesystem(&configfs_fs_type);
|
||||
kobject_put(config_kobj);
|
||||
sysfs_remove_mount_point(kernel_kobj, "config");
|
||||
kmem_cache_destroy(configfs_dir_cachep);
|
||||
configfs_dir_cachep = NULL;
|
||||
}
|
||||
|
@ -716,20 +716,17 @@ bool debugfs_initialized(void)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(debugfs_initialized);
|
||||
|
||||
|
||||
static struct kobject *debug_kobj;
|
||||
|
||||
static int __init debugfs_init(void)
|
||||
{
|
||||
int retval;
|
||||
|
||||
debug_kobj = kobject_create_and_add("debug", kernel_kobj);
|
||||
if (!debug_kobj)
|
||||
return -EINVAL;
|
||||
retval = sysfs_create_mount_point(kernel_kobj, "debug");
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
retval = register_filesystem(&debug_fs_type);
|
||||
if (retval)
|
||||
kobject_put(debug_kobj);
|
||||
sysfs_remove_mount_point(kernel_kobj, "debug");
|
||||
else
|
||||
debugfs_registered = true;
|
||||
|
||||
|
@ -1238,7 +1238,6 @@ static void fuse_fs_cleanup(void)
|
||||
}
|
||||
|
||||
static struct kobject *fuse_kobj;
|
||||
static struct kobject *connections_kobj;
|
||||
|
||||
static int fuse_sysfs_init(void)
|
||||
{
|
||||
@ -1250,11 +1249,9 @@ static int fuse_sysfs_init(void)
|
||||
goto out_err;
|
||||
}
|
||||
|
||||
connections_kobj = kobject_create_and_add("connections", fuse_kobj);
|
||||
if (!connections_kobj) {
|
||||
err = -ENOMEM;
|
||||
err = sysfs_create_mount_point(fuse_kobj, "connections");
|
||||
if (err)
|
||||
goto out_fuse_unregister;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@ -1266,7 +1263,7 @@ static int fuse_sysfs_init(void)
|
||||
|
||||
static void fuse_sysfs_cleanup(void)
|
||||
{
|
||||
kobject_put(connections_kobj);
|
||||
sysfs_remove_mount_point(fuse_kobj, "connections");
|
||||
kobject_put(fuse_kobj);
|
||||
}
|
||||
|
||||
|
@ -461,22 +461,18 @@ static struct file_system_type pstore_fs_type = {
|
||||
.kill_sb = pstore_kill_sb,
|
||||
};
|
||||
|
||||
static struct kobject *pstore_kobj;
|
||||
|
||||
static int __init init_pstore_fs(void)
|
||||
{
|
||||
int err = 0;
|
||||
int err;
|
||||
|
||||
/* Create a convenient mount point for people to access pstore */
|
||||
pstore_kobj = kobject_create_and_add("pstore", fs_kobj);
|
||||
if (!pstore_kobj) {
|
||||
err = -ENOMEM;
|
||||
err = sysfs_create_mount_point(fs_kobj, "pstore");
|
||||
if (err)
|
||||
goto out;
|
||||
}
|
||||
|
||||
err = register_filesystem(&pstore_fs_type);
|
||||
if (err < 0)
|
||||
kobject_put(pstore_kobj);
|
||||
sysfs_remove_mount_point(fs_kobj, "pstore");
|
||||
|
||||
out:
|
||||
return err;
|
||||
|
@ -631,14 +631,12 @@ bool tracefs_initialized(void)
|
||||
return tracefs_registered;
|
||||
}
|
||||
|
||||
static struct kobject *trace_kobj;
|
||||
|
||||
static int __init tracefs_init(void)
|
||||
{
|
||||
int retval;
|
||||
|
||||
trace_kobj = kobject_create_and_add("tracing", kernel_kobj);
|
||||
if (!trace_kobj)
|
||||
retval = sysfs_create_mount_point(kernel_kobj, "tracing");
|
||||
if (retval)
|
||||
return -EINVAL;
|
||||
|
||||
retval = register_filesystem(&trace_fs_type);
|
||||
|
@ -1924,8 +1924,6 @@ static struct file_system_type cgroup_fs_type = {
|
||||
.kill_sb = cgroup_kill_sb,
|
||||
};
|
||||
|
||||
static struct kobject *cgroup_kobj;
|
||||
|
||||
/**
|
||||
* task_cgroup_path - cgroup path of a task in the first cgroup hierarchy
|
||||
* @task: target task
|
||||
@ -5044,13 +5042,13 @@ int __init cgroup_init(void)
|
||||
ss->bind(init_css_set.subsys[ssid]);
|
||||
}
|
||||
|
||||
cgroup_kobj = kobject_create_and_add("cgroup", fs_kobj);
|
||||
if (!cgroup_kobj)
|
||||
return -ENOMEM;
|
||||
err = sysfs_create_mount_point(fs_kobj, "cgroup");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = register_filesystem(&cgroup_fs_type);
|
||||
if (err < 0) {
|
||||
kobject_put(cgroup_kobj);
|
||||
sysfs_remove_mount_point(fs_kobj, "cgroup");
|
||||
return err;
|
||||
}
|
||||
|
||||
|
@ -215,19 +215,17 @@ void securityfs_remove(struct dentry *dentry)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(securityfs_remove);
|
||||
|
||||
static struct kobject *security_kobj;
|
||||
|
||||
static int __init securityfs_init(void)
|
||||
{
|
||||
int retval;
|
||||
|
||||
security_kobj = kobject_create_and_add("security", kernel_kobj);
|
||||
if (!security_kobj)
|
||||
return -EINVAL;
|
||||
retval = sysfs_create_mount_point(kernel_kobj, "security");
|
||||
if (retval)
|
||||
return retval;
|
||||
|
||||
retval = register_filesystem(&fs_type);
|
||||
if (retval)
|
||||
kobject_put(security_kobj);
|
||||
sysfs_remove_mount_point(kernel_kobj, "security");
|
||||
return retval;
|
||||
}
|
||||
|
||||
|
@ -1853,7 +1853,6 @@ static struct file_system_type sel_fs_type = {
|
||||
};
|
||||
|
||||
struct vfsmount *selinuxfs_mount;
|
||||
static struct kobject *selinuxfs_kobj;
|
||||
|
||||
static int __init init_sel_fs(void)
|
||||
{
|
||||
@ -1862,13 +1861,13 @@ static int __init init_sel_fs(void)
|
||||
if (!selinux_enabled)
|
||||
return 0;
|
||||
|
||||
selinuxfs_kobj = kobject_create_and_add("selinux", fs_kobj);
|
||||
if (!selinuxfs_kobj)
|
||||
return -ENOMEM;
|
||||
err = sysfs_create_mount_point(fs_kobj, "selinux");
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = register_filesystem(&sel_fs_type);
|
||||
if (err) {
|
||||
kobject_put(selinuxfs_kobj);
|
||||
sysfs_remove_mount_point(fs_kobj, "selinux");
|
||||
return err;
|
||||
}
|
||||
|
||||
@ -1887,7 +1886,7 @@ __initcall(init_sel_fs);
|
||||
#ifdef CONFIG_SECURITY_SELINUX_DISABLE
|
||||
void exit_sel_fs(void)
|
||||
{
|
||||
kobject_put(selinuxfs_kobj);
|
||||
sysfs_remove_mount_point(fs_kobj, "selinux");
|
||||
kern_unmount(selinuxfs_mount);
|
||||
unregister_filesystem(&sel_fs_type);
|
||||
}
|
||||
|
@ -2241,16 +2241,16 @@ static const struct file_operations smk_revoke_subj_ops = {
|
||||
.llseek = generic_file_llseek,
|
||||
};
|
||||
|
||||
static struct kset *smackfs_kset;
|
||||
/**
|
||||
* smk_init_sysfs - initialize /sys/fs/smackfs
|
||||
*
|
||||
*/
|
||||
static int smk_init_sysfs(void)
|
||||
{
|
||||
smackfs_kset = kset_create_and_add("smackfs", NULL, fs_kobj);
|
||||
if (!smackfs_kset)
|
||||
return -ENOMEM;
|
||||
int err;
|
||||
err = sysfs_create_mount_point(fs_kobj, "smackfs");
|
||||
if (err)
|
||||
return err;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user