Commit d1a1a960 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Greg Kroah-Hartman
Browse files

sysfs: refactor sysfs_add_file_mode_ns



Regroup the code so that preallocated attributes and normal attributes are
handled in clearly separate blocks.

Acked-by: default avatarChristian Brauner <christian.brauner@ubuntu.com>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Link: https://lore.kernel.org/r/20210913054121.616001-6-hch@lst.de


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 5cf3bb0d
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
	struct kobject *kobj = parent->priv;
	const struct sysfs_ops *sysfs_ops = kobj->ktype->sysfs_ops;
	struct lock_class_key *key = NULL;
	const struct kernfs_ops *ops;
	const struct kernfs_ops *ops = NULL;
	struct kernfs_node *kn;

	/* every kobject with an attribute needs a ktype assigned */
@@ -270,22 +270,23 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
			kobject_name(kobj)))
		return -EINVAL;

	if (sysfs_ops->show && sysfs_ops->store) {
		if (mode & SYSFS_PREALLOC)
	if (mode & SYSFS_PREALLOC) {
		if (sysfs_ops->show && sysfs_ops->store)
			ops = &sysfs_prealloc_kfops_rw;
		else
			ops = &sysfs_file_kfops_rw;
	} else if (sysfs_ops->show) {
		if (mode & SYSFS_PREALLOC)
		else if (sysfs_ops->show)
			ops = &sysfs_prealloc_kfops_ro;
		else
			ops = &sysfs_file_kfops_ro;
	} else if (sysfs_ops->store) {
		if (mode & SYSFS_PREALLOC)
		else if (sysfs_ops->store)
			ops = &sysfs_prealloc_kfops_wo;
		else
	} else {
		if (sysfs_ops->show && sysfs_ops->store)
			ops = &sysfs_file_kfops_rw;
		else if (sysfs_ops->show)
			ops = &sysfs_file_kfops_ro;
		else if (sysfs_ops->store)
			ops = &sysfs_file_kfops_wo;
	} else
	}

	if (!ops)
		ops = &sysfs_file_kfops_empty;

#ifdef CONFIG_DEBUG_LOCK_ALLOC