diff options
Diffstat (limited to 'kernel/params.c')
| -rw-r--r-- | kernel/params.c | 23 | 
1 files changed, 19 insertions, 4 deletions
| diff --git a/kernel/params.c b/kernel/params.c index 5b92310425c5..a06f80c56f19 100644 --- a/kernel/params.c +++ b/kernel/params.c @@ -940,7 +940,6 @@ static const struct kset_uevent_ops module_uevent_ops = {  };  struct kset *module_kset; -int module_sysfs_initialized;  static void module_kobj_release(struct kobject *kobj)  { @@ -954,7 +953,11 @@ struct kobj_type module_ktype = {  };  /* - * param_sysfs_init - wrapper for built-in params support + * param_sysfs_init - create "module" kset + * + * This must be done before the initramfs is unpacked and + * request_module() thus becomes possible, because otherwise the + * module load would fail in mod_sysfs_init.   */  static int __init param_sysfs_init(void)  { @@ -964,13 +967,25 @@ static int __init param_sysfs_init(void)  			__FILE__, __LINE__);  		return -ENOMEM;  	} -	module_sysfs_initialized = 1; + +	return 0; +} +subsys_initcall(param_sysfs_init); + +/* + * param_sysfs_builtin_init - add sysfs version and parameter + * attributes for built-in modules + */ +static int __init param_sysfs_builtin_init(void) +{ +	if (!module_kset) +		return -ENOMEM;  	version_sysfs_builtin();  	param_sysfs_builtin();  	return 0;  } -subsys_initcall(param_sysfs_init); +late_initcall(param_sysfs_builtin_init);  #endif /* CONFIG_SYSFS */ |