Patch "sysfs: Create mountpoints with sysfs_create_mount_point" has been added to the 4.0-stable tree
Subsystems (10)
This is a note to let you know that I've just added the patch titled
sysfs: Create mountpoints with sysfs_create_mount_point
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
sysfs-create-mountpoints-with-sysfs_create_mount_point.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
f9bb48825a6b5d02f4cabcc78967c75db903dcdcMon Sep 17 00:00:00 2001
From: "Eric W. Biederman" <[email protected]>
Date: Wed, 13 May 2015 17:35:41 -0500
Subject: sysfs: Create mountpoints with sysfs_create_mount_point
From: "Eric W. Biederman" <[email protected]>
commit f9bb48825a6b5d02f4cabcc78967c75db903dcdc upstream.
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
--- arch/s390/hypfs/inode.c | 12 ++++-------- drivers/firmware/efi/efi.c | 6 ++---- fs/configfs/mount.c | 10 ++++------ fs/debugfs/inode.c | 11 ++++------- fs/fuse/inode.c | 9 +++------ fs/pstore/inode.c | 12 ++++-------- kernel/cgroup.c | 10 ++++------ security/inode.c | 10 ++++------ security/selinux/selinuxfs.c | 11 +++++------ security/smack/smackfs.c | 8 ++++---- 10 files changed, 38 insertions(+), 61 deletions(-)
arch/s390/hypfs/inode.c +4 -8
@@ -458,8 +458,6 @@ static const struct super_operations hyp .show_options = hypfs_show_options, }; -static struct kobject *s390_kobj; -static int __init hypfs_init (void ) {int rc;
@@ -483,18 +481,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:
@@ -512,7 +508,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 ();
drivers/firmware/efi/efi.c +2 -4
@@ -65,7 +65,6 @@ static int __init parse_efi_cmdline(charearly_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; }
fs/configfs/mount.c +4 -6
@@ -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 ; }
fs/debugfs/inode.c +4 -7
@@ -713,20 +713,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;
fs/fuse/inode.c +3 -6
@@ -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); }
fs/pstore/inode.c +4 -8
@@ -458,22 +458,18 @@ static struct file_system_type pstore_fs .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;
kernel/cgroup.c +4 -6
@@ -1924,8 +1924,6 @@ static struct file_system_type cgroup_fs .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
@@ -5042,13 +5040,13 @@ int __init cgroup_init(void) } } - 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; }
security/inode.c +4 -6
@@ -215,19 +215,17 @@ void securityfs_remove(struct dentry *de }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; }
security/selinux/selinuxfs.c +5 -6
@@ -1853,7 +1853,6 @@ static struct file_system_type sel_fs_ty };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); }
security/smack/smackfs.c +4 -4
@@ -2150,16 +2150,16 @@ static const struct file_operations smk_ .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 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/sysfs-create-mountpoints-with-sysfs_create_mount_point.patch queue-4.0/sysfs-add-support-for-permanently-empty-directories-to-serve-as-mount-points.patch queue-4.0/mnt-update-fs_fully_visible-to-test-for-permanently-empty-directories.patch queue-4.0/mnt-refactor-the-logic-for-mounting-sysfs-and-proc-in-a-user-namespace.patch queue-4.0/mnt-modify-fs_fully_visible-to-deal-with-locked-ro-nodev-and-atime.patch queue-4.0/fs-add-helper-functions-for-permanently-empty-directories.patch queue-4.0/sysctl-allow-creating-permanently-empty-directories-that-serve-as-mountpoints.patch queue-4.0/kernfs-add-support-for-always-empty-directories.patch queue-4.0/proc-allow-creating-permanently-empty-directories-that-serve-as-mount-points.patch