sysfs, kobject: add sysfs wrapper for kernfs_enable_ns()
Currently, kobject is invoking kernfs_enable_ns() directly. This is fine now as sysfs and kernfs are enabled and disabled together. If sysfs is disabled, kernfs_enable_ns() is switched to dummy implementation too and everything is fine; however, kernfs will soon have its own config option CONFIG_KERNFS and !SYSFS && KERNFS will be possible, which can make kobject call into non-dummy kernfs_enable_ns() with NULL kernfs_node pointers leading to an oops. Introduce sysfs_enable_ns() which is a wrapper around kernfs_enable_ns() so that it can be made a noop depending only on CONFIG_SYSFS regardless of the planned CONFIG_KERNFS. Signed-off-by: Tejun Heo <tj@kernel.org> Reported-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Родитель
3eef34ad7d
Коммит
fa4cd451cc
|
@ -244,6 +244,11 @@ void sysfs_notify(struct kobject *kobj, const char *dir, const char *attr);
|
|||
|
||||
int __must_check sysfs_init(void);
|
||||
|
||||
static inline void sysfs_enable_ns(struct kernfs_node *kn)
|
||||
{
|
||||
return kernfs_enable_ns(kn);
|
||||
}
|
||||
|
||||
#else /* CONFIG_SYSFS */
|
||||
|
||||
static inline int sysfs_create_dir_ns(struct kobject *kobj, const void *ns)
|
||||
|
@ -416,6 +421,10 @@ static inline int __must_check sysfs_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline void sysfs_enable_ns(struct kernfs_node *kn)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_SYSFS */
|
||||
|
||||
static inline int __must_check sysfs_create_file(struct kobject *kobj,
|
||||
|
|
|
@ -94,7 +94,7 @@ static int create_dir(struct kobject *kobj)
|
|||
BUG_ON(ops->type >= KOBJ_NS_TYPES);
|
||||
BUG_ON(!kobj_ns_type_registered(ops->type));
|
||||
|
||||
kernfs_enable_ns(kobj->sd);
|
||||
sysfs_enable_ns(kobj->sd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче