EDAC: Boundary-check edac_debug_level
Only levels [0:4] are allowed so enforce that. Also, while at it, massage Kconfig text and add valid debug levels range to the module parameter description. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
This commit is contained in:
parent
876bb331e2
commit
37929874d4
|
@ -42,10 +42,10 @@ config EDAC_LEGACY_SYSFS
|
||||||
config EDAC_DEBUG
|
config EDAC_DEBUG
|
||||||
bool "Debugging"
|
bool "Debugging"
|
||||||
help
|
help
|
||||||
This turns on debugging information for the entire EDAC
|
This turns on debugging information for the entire EDAC subsystem.
|
||||||
sub-system. You can insert module with "debug_level=x", current
|
You do so by inserting edac_module with "edac_debug_level=x." Valid
|
||||||
there're four debug levels (x=0,1,2,3 from low to high).
|
levels are 0-4 (from low to high) and by default it is set to 2.
|
||||||
Usually you should select 'N'.
|
Usually you should select 'N' here.
|
||||||
|
|
||||||
config EDAC_DECODE_MCE
|
config EDAC_DECODE_MCE
|
||||||
tristate "Decode MCEs in human-readable form (only on AMD for now)"
|
tristate "Decode MCEs in human-readable form (only on AMD for now)"
|
||||||
|
|
|
@ -18,9 +18,29 @@
|
||||||
#define EDAC_VERSION "Ver: 3.0.0"
|
#define EDAC_VERSION "Ver: 3.0.0"
|
||||||
|
|
||||||
#ifdef CONFIG_EDAC_DEBUG
|
#ifdef CONFIG_EDAC_DEBUG
|
||||||
|
|
||||||
|
static int edac_set_debug_level(const char *buf, struct kernel_param *kp)
|
||||||
|
{
|
||||||
|
unsigned long val;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
ret = kstrtoul(buf, 0, &val);
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
if (val < 0 || val > 4)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
return param_set_int(buf, kp);
|
||||||
|
}
|
||||||
|
|
||||||
/* Values of 0 to 4 will generate output */
|
/* Values of 0 to 4 will generate output */
|
||||||
int edac_debug_level = 2;
|
int edac_debug_level = 2;
|
||||||
EXPORT_SYMBOL_GPL(edac_debug_level);
|
EXPORT_SYMBOL_GPL(edac_debug_level);
|
||||||
|
|
||||||
|
module_param_call(edac_debug_level, edac_set_debug_level, param_get_int,
|
||||||
|
&edac_debug_level, 0644);
|
||||||
|
MODULE_PARM_DESC(edac_debug_level, "EDAC debug level: [0-4], default: 2");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* scope is to module level only */
|
/* scope is to module level only */
|
||||||
|
@ -132,10 +152,3 @@ module_exit(edac_exit);
|
||||||
MODULE_LICENSE("GPL");
|
MODULE_LICENSE("GPL");
|
||||||
MODULE_AUTHOR("Doug Thompson www.softwarebitmaker.com, et al");
|
MODULE_AUTHOR("Doug Thompson www.softwarebitmaker.com, et al");
|
||||||
MODULE_DESCRIPTION("Core library routines for EDAC reporting");
|
MODULE_DESCRIPTION("Core library routines for EDAC reporting");
|
||||||
|
|
||||||
/* refer to *_sysfs.c files for parameters that are exported via sysfs */
|
|
||||||
|
|
||||||
#ifdef CONFIG_EDAC_DEBUG
|
|
||||||
module_param(edac_debug_level, int, 0644);
|
|
||||||
MODULE_PARM_DESC(edac_debug_level, "Debug level");
|
|
||||||
#endif
|
|
||||||
|
|
Loading…
Reference in a new issue