diff options
Diffstat (limited to 'include/linux/moduleparam.h')
| -rw-r--r-- | include/linux/moduleparam.h | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/include/linux/moduleparam.h b/include/linux/moduleparam.h index 7939f636c8ba..c47f4d60db0b 100644 --- a/include/linux/moduleparam.h +++ b/include/linux/moduleparam.h @@ -350,23 +350,23 @@ extern int param_set_charp(const char *val, const struct kernel_param *kp);  extern int param_get_charp(char *buffer, const struct kernel_param *kp);  #define param_check_charp(name, p) __param_check(name, p, char *) -/* For historical reasons "bool" parameters can be (unsigned) "int". */ +/* We used to allow int as well as bool.  We're taking that away! */  extern struct kernel_param_ops param_ops_bool;  extern int param_set_bool(const char *val, const struct kernel_param *kp);  extern int param_get_bool(char *buffer, const struct kernel_param *kp); -#define param_check_bool(name, p)					\ -	static inline void __check_##name(void)				\ -	{								\ -		BUILD_BUG_ON(!__same_type((p), bool *) &&		\ -			     !__same_type((p), unsigned int *) &&	\ -			     !__same_type((p), int *));			\ -	} +#define param_check_bool(name, p) __param_check(name, p, bool)  extern struct kernel_param_ops param_ops_invbool;  extern int param_set_invbool(const char *val, const struct kernel_param *kp);  extern int param_get_invbool(char *buffer, const struct kernel_param *kp);  #define param_check_invbool(name, p) __param_check(name, p, bool) +/* An int, which can only be set like a bool (though it shows as an int). */ +extern struct kernel_param_ops param_ops_bint; +extern int param_set_bint(const char *val, const struct kernel_param *kp); +#define param_get_bint param_get_int +#define param_check_bint param_check_int +  /**   * module_param_array - a parameter which is an array of some type   * @name: the name of the array variable @@ -395,6 +395,7 @@ extern int param_get_invbool(char *buffer, const struct kernel_param *kp);   * module_param_named() for why this might be necessary.   */  #define module_param_array_named(name, array, type, nump, perm)		\ +	param_check_##type(name, &(array)[0]);				\  	static const struct kparam_array __param_arr_##name		\  	= { .max = ARRAY_SIZE(array), .num = nump,                      \  	    .ops = ¶m_ops_##type,					\  | 
