mirror of
https://github.com/torvalds/linux
synced 2024-10-15 15:59:15 +00:00
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: Christian Brauner <christian.brauner@ubuntu.com> Acked-by: Tejun Heo <tj@kernel.org> Signed-off-by: Christoph Hellwig <hch@lst.de> Link: https://lore.kernel.org/r/20210913054121.616001-6-hch@lst.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
5cf3bb0d3a
commit
d1a1a9606e
|
@ -261,7 +261,7 @@ int sysfs_add_file_mode_ns(struct kernfs_node *parent,
|
||||||
struct kobject *kobj = parent->priv;
|
struct kobject *kobj = parent->priv;
|
||||||
const struct sysfs_ops *sysfs_ops = kobj->ktype->sysfs_ops;
|
const struct sysfs_ops *sysfs_ops = kobj->ktype->sysfs_ops;
|
||||||
struct lock_class_key *key = NULL;
|
struct lock_class_key *key = NULL;
|
||||||
const struct kernfs_ops *ops;
|
const struct kernfs_ops *ops = NULL;
|
||||||
struct kernfs_node *kn;
|
struct kernfs_node *kn;
|
||||||
|
|
||||||
/* every kobject with an attribute needs a ktype assigned */
|
/* 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)))
|
kobject_name(kobj)))
|
||||||
return -EINVAL;
|
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;
|
ops = &sysfs_prealloc_kfops_rw;
|
||||||
else
|
else if (sysfs_ops->show)
|
||||||
ops = &sysfs_file_kfops_rw;
|
|
||||||
} else if (sysfs_ops->show) {
|
|
||||||
if (mode & SYSFS_PREALLOC)
|
|
||||||
ops = &sysfs_prealloc_kfops_ro;
|
ops = &sysfs_prealloc_kfops_ro;
|
||||||
else
|
else if (sysfs_ops->store)
|
||||||
ops = &sysfs_file_kfops_ro;
|
|
||||||
} else if (sysfs_ops->store) {
|
|
||||||
if (mode & SYSFS_PREALLOC)
|
|
||||||
ops = &sysfs_prealloc_kfops_wo;
|
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;
|
ops = &sysfs_file_kfops_wo;
|
||||||
} else
|
}
|
||||||
|
|
||||||
|
if (!ops)
|
||||||
ops = &sysfs_file_kfops_empty;
|
ops = &sysfs_file_kfops_empty;
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
#ifdef CONFIG_DEBUG_LOCK_ALLOC
|
||||||
|
|
Loading…
Reference in a new issue