From: David Decotigny <decot@xxxxxxxxxx> Moved locate_module_kobject() to limit the number of #ifdef/#endif blocks. Also moved __modinit macro definition at the top. Tested: make defconfig all + make all with # CONFIG_SYSFS is not set Signed-off-by: David Decotigny <david.decotigny@xxxxxxxxxx> --- kernel/params.c | 93 ++++++++++++++++++++++++++---------------------------- 1 files changed, 45 insertions(+), 48 deletions(-) diff --git a/kernel/params.c b/kernel/params.c index 75fd7bf..b0e1668 100644 --- a/kernel/params.c +++ b/kernel/params.c @@ -31,6 +31,12 @@ #define DEBUGP(fmt, a...) #endif +#ifdef CONFIG_MODULES +#define __modinit +#else +#define __modinit __init +#endif + /* Protects all parameters, and incidentally kmalloced_param list. */ static DEFINE_MUTEX(param_lock); @@ -515,6 +521,44 @@ struct module_param_attrs }; #ifdef CONFIG_SYSFS +static struct module_kobject * __init locate_module_kobject(const char *name) +{ + struct module_kobject *mk; + struct kobject *kobj; + int err; + + kobj = kset_find_obj(module_kset, name); + if (kobj) { + mk = to_module_kobject(kobj); + } else { + mk = kzalloc(sizeof(struct module_kobject), GFP_KERNEL); + BUG_ON(!mk); + + mk->mod = THIS_MODULE; + mk->kobj.kset = module_kset; + err = kobject_init_and_add(&mk->kobj, &module_ktype, NULL, + "%s", name); +#ifdef CONFIG_MODULES + if (!err) + err = sysfs_create_file(&mk->kobj, &module_uevent.attr); +#endif + if (err) { + kobject_put(&mk->kobj); + printk(KERN_ERR + "Module '%s' failed add to sysfs, error number %d\n", + name, err); + printk(KERN_ERR + "The system will be unstable now.\n"); + return NULL; + } + + /* So that we hold reference in both cases. */ + kobject_get(&mk->kobj); + } + + return mk; +} + #define to_param_attr(n) container_of(n, struct param_attribute, mattr) static ssize_t param_attr_show(struct module_attribute *mattr, @@ -554,15 +598,7 @@ static ssize_t param_attr_store(struct module_attribute *mattr, return len; return err; } -#endif - -#ifdef CONFIG_MODULES -#define __modinit -#else -#define __modinit __init -#endif -#ifdef CONFIG_SYSFS void __kernel_param_lock(void) { mutex_lock(¶m_lock); @@ -709,46 +745,7 @@ void module_param_sysfs_remove(struct module *mod) free_module_param_attrs(&mod->mkobj); } } -#endif - - -static struct module_kobject * __init locate_module_kobject(const char *name) -{ - struct module_kobject *mk; - struct kobject *kobj; - int err; - - kobj = kset_find_obj(module_kset, name); - if (kobj) { - mk = to_module_kobject(kobj); - } else { - mk = kzalloc(sizeof(struct module_kobject), GFP_KERNEL); - BUG_ON(!mk); - - mk->mod = THIS_MODULE; - mk->kobj.kset = module_kset; - err = kobject_init_and_add(&mk->kobj, &module_ktype, NULL, - "%s", name); -#ifdef CONFIG_MODULES - if (!err) - err = sysfs_create_file(&mk->kobj, &module_uevent.attr); -#endif - if (err) { - kobject_put(&mk->kobj); - printk(KERN_ERR - "Module '%s' failed add to sysfs, error number %d\n", - name, err); - printk(KERN_ERR - "The system will be unstable now.\n"); - return NULL; - } - - /* So that we hold reference in both cases. */ - kobject_get(&mk->kobj); - } - - return mk; -} +#endif /* CONFIG_MODULES */ static void __init kernel_add_sysfs_param(const char *name, struct kernel_param *kparam, -- 1.7.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-doc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html