diff options
author | Borislav Petkov <borislav.petkov@amd.com> | 2012-09-10 10:50:54 -0400 |
---|---|---|
committer | Borislav Petkov <bp@alien8.de> | 2012-11-28 05:23:32 -0500 |
commit | 37929874d439d79e8f6128f400f63069ee1bbf3e (patch) | |
tree | b0f8ac80ab7b804a03a47a0bb1457dfe2a39effc /drivers/edac/edac_module.c | |
parent | 876bb331e26b970c2d8caea2c1d1209fdae953d0 (diff) |
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>
Diffstat (limited to 'drivers/edac/edac_module.c')
-rw-r--r-- | drivers/edac/edac_module.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/drivers/edac/edac_module.c b/drivers/edac/edac_module.c index 58a28d838f37..12c951a2c33d 100644 --- a/drivers/edac/edac_module.c +++ b/drivers/edac/edac_module.c | |||
@@ -18,9 +18,29 @@ | |||
18 | #define EDAC_VERSION "Ver: 3.0.0" | 18 | #define EDAC_VERSION "Ver: 3.0.0" |
19 | 19 | ||
20 | #ifdef CONFIG_EDAC_DEBUG | 20 | #ifdef CONFIG_EDAC_DEBUG |
21 | |||
22 | static int edac_set_debug_level(const char *buf, struct kernel_param *kp) | ||
23 | { | ||
24 | unsigned long val; | ||
25 | int ret; | ||
26 | |||
27 | ret = kstrtoul(buf, 0, &val); | ||
28 | if (ret) | ||
29 | return ret; | ||
30 | |||
31 | if (val < 0 || val > 4) | ||
32 | return -EINVAL; | ||
33 | |||
34 | return param_set_int(buf, kp); | ||
35 | } | ||
36 | |||
21 | /* Values of 0 to 4 will generate output */ | 37 | /* Values of 0 to 4 will generate output */ |
22 | int edac_debug_level = 2; | 38 | int edac_debug_level = 2; |
23 | EXPORT_SYMBOL_GPL(edac_debug_level); | 39 | EXPORT_SYMBOL_GPL(edac_debug_level); |
40 | |||
41 | module_param_call(edac_debug_level, edac_set_debug_level, param_get_int, | ||
42 | &edac_debug_level, 0644); | ||
43 | MODULE_PARM_DESC(edac_debug_level, "EDAC debug level: [0-4], default: 2"); | ||
24 | #endif | 44 | #endif |
25 | 45 | ||
26 | /* scope is to module level only */ | 46 | /* scope is to module level only */ |
@@ -132,10 +152,3 @@ module_exit(edac_exit); | |||
132 | MODULE_LICENSE("GPL"); | 152 | MODULE_LICENSE("GPL"); |
133 | MODULE_AUTHOR("Doug Thompson www.softwarebitmaker.com, et al"); | 153 | MODULE_AUTHOR("Doug Thompson www.softwarebitmaker.com, et al"); |
134 | MODULE_DESCRIPTION("Core library routines for EDAC reporting"); | 154 | MODULE_DESCRIPTION("Core library routines for EDAC reporting"); |
135 | |||
136 | /* refer to *_sysfs.c files for parameters that are exported via sysfs */ | ||
137 | |||
138 | #ifdef CONFIG_EDAC_DEBUG | ||
139 | module_param(edac_debug_level, int, 0644); | ||
140 | MODULE_PARM_DESC(edac_debug_level, "Debug level"); | ||
141 | #endif | ||