diff options
Diffstat (limited to 'kernel/params.c')
| -rw-r--r-- | kernel/params.c | 25 | 
1 files changed, 9 insertions, 16 deletions
diff --git a/kernel/params.c b/kernel/params.c index c00d5b502aa4..b00142e7f3ba 100644 --- a/kernel/params.c +++ b/kernel/params.c @@ -227,17 +227,10 @@ int parse_args(const char *doing,  }  /* Lazy bastard, eh? */ -#define STANDARD_PARAM_DEF(name, type, format, tmptype, strtolfn)      	\ +#define STANDARD_PARAM_DEF(name, type, format, strtolfn)      		\  	int param_set_##name(const char *val, const struct kernel_param *kp) \  	{								\ -		tmptype l;						\ -		int ret;						\ -									\ -		ret = strtolfn(val, 0, &l);				\ -		if (ret < 0 || ((type)l != l))				\ -			return ret < 0 ? ret : -EINVAL;			\ -		*((type *)kp->arg) = l;					\ -		return 0;						\ +		return strtolfn(val, 0, (type *)kp->arg);		\  	}								\  	int param_get_##name(char *buffer, const struct kernel_param *kp) \  	{								\ @@ -253,13 +246,13 @@ int parse_args(const char *doing,  	EXPORT_SYMBOL(param_ops_##name) -STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", unsigned long, kstrtoul); -STANDARD_PARAM_DEF(short, short, "%hi", long, kstrtol); -STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", unsigned long, kstrtoul); -STANDARD_PARAM_DEF(int, int, "%i", long, kstrtol); -STANDARD_PARAM_DEF(uint, unsigned int, "%u", unsigned long, kstrtoul); -STANDARD_PARAM_DEF(long, long, "%li", long, kstrtol); -STANDARD_PARAM_DEF(ulong, unsigned long, "%lu", unsigned long, kstrtoul); +STANDARD_PARAM_DEF(byte, unsigned char, "%hhu", kstrtou8); +STANDARD_PARAM_DEF(short, short, "%hi", kstrtos16); +STANDARD_PARAM_DEF(ushort, unsigned short, "%hu", kstrtou16); +STANDARD_PARAM_DEF(int, int, "%i", kstrtoint); +STANDARD_PARAM_DEF(uint, unsigned int, "%u", kstrtouint); +STANDARD_PARAM_DEF(long, long, "%li", kstrtol); +STANDARD_PARAM_DEF(ulong, unsigned long, "%lu", kstrtoul);  int param_set_charp(const char *val, const struct kernel_param *kp)  {  |