Skip to content

Commit

Permalink
sysfs: Create mountpoints with sysfs_create_mount_point
Browse files Browse the repository at this point in the history
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: [email protected]
Acked-by: Greg Kroah-Hartman <[email protected]>
Signed-off-by: "Eric W. Biederman" <[email protected]>
  • Loading branch information
ebiederm committed Jul 1, 2015
1 parent 87d2846 commit f9bb488
Show file tree
Hide file tree
Showing 11 changed files with 40 additions and 65 deletions.
12 changes: 4 additions & 8 deletions arch/s390/hypfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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:
Expand All @@ -510,7 +506,7 @@ static int __init hypfs_init(void)
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();
Expand Down
6 changes: 2 additions & 4 deletions drivers/firmware/efi/efi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}

Expand Down
10 changes: 4 additions & 6 deletions fs/configfs/mount.c
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,6 @@ void configfs_release_fs(void)
}


static struct kobject *config_kobj;

static int __init configfs_init(void)
{
int err = -ENOMEM;
Expand All @@ -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);
Expand All @@ -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;
Expand All @@ -163,7 +161,7 @@ static int __init configfs_init(void)
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;
}
Expand Down
11 changes: 4 additions & 7 deletions fs/debugfs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
9 changes: 3 additions & 6 deletions fs/fuse/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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;

Expand All @@ -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);
}

Expand Down
12 changes: 4 additions & 8 deletions fs/pstore/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
6 changes: 2 additions & 4 deletions fs/tracefs/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
10 changes: 4 additions & 6 deletions kernel/cgroup.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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;
}

Expand Down
10 changes: 4 additions & 6 deletions security/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down
11 changes: 5 additions & 6 deletions security/selinux/selinuxfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand All @@ -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;
}

Expand All @@ -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);
}
Expand Down
8 changes: 4 additions & 4 deletions security/smack/smackfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}

Expand Down

0 comments on commit f9bb488

Please sign in to comment.