diff options
Diffstat (limited to 'kernel/params.c')
| -rw-r--r-- | kernel/params.c | 23 | 
1 files changed, 10 insertions, 13 deletions
diff --git a/kernel/params.c b/kernel/params.c index 7ab388a48a2..ed72e133086 100644 --- a/kernel/params.c +++ b/kernel/params.c @@ -297,21 +297,15 @@ EXPORT_SYMBOL(param_ops_charp);  int param_set_bool(const char *val, const struct kernel_param *kp)  {  	bool v; +	int ret;  	/* No equals means "set"... */  	if (!val) val = "1";  	/* One of =[yYnN01] */ -	switch (val[0]) { -	case 'y': case 'Y': case '1': -		v = true; -		break; -	case 'n': case 'N': case '0': -		v = false; -		break; -	default: -		return -EINVAL; -	} +	ret = strtobool(val, &v); +	if (ret) +		return ret;  	if (kp->flags & KPARAM_ISBOOL)  		*(bool *)kp->arg = v; @@ -821,15 +815,18 @@ ssize_t __modver_version_show(struct module_attribute *mattr,  	return sprintf(buf, "%s\n", vattr->version);  } -extern struct module_version_attribute __start___modver[], __stop___modver[]; +extern const struct module_version_attribute *__start___modver[]; +extern const struct module_version_attribute *__stop___modver[];  static void __init version_sysfs_builtin(void)  { -	const struct module_version_attribute *vattr; +	const struct module_version_attribute **p;  	struct module_kobject *mk;  	int err; -	for (vattr = __start___modver; vattr < __stop___modver; vattr++) { +	for (p = __start___modver; p < __stop___modver; p++) { +		const struct module_version_attribute *vattr = *p; +  		mk = locate_module_kobject(vattr->module_name);  		if (mk) {  			err = sysfs_create_file(&mk->kobj, &vattr->mattr.attr);  |