diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2011-10-31 23:59:33 -0400 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-11-06 16:24:40 -0500 |
commit | 1cd0d6c3021c8d76641b37203f504634b87fbabc (patch) | |
tree | e58051cdb845375c13c22bfa38db0b6fc2c71977 | |
parent | 43672a0784707d795556b1f93925da8b8e797d03 (diff) |
module: Enable dynamic debugging regardless of taint
Dynamic debugging is currently disabled for tainted modules, except
for TAINT_CRAP. This prevents use of dynamic debugging for
out-of-tree modules once the next patch is applied.
This condition was apparently intended to avoid a crash if a force-
loaded module has an incompatible definition of dynamic debug
structures. However, a administrator that forces us to load a module
is claiming that it *is* compatible even though it fails our version
checks. If they are mistaken, there are any number of ways the module
could crash the system.
As a side-effect, proprietary and other tainted modules can now use
dynamic_debug.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Acked-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
-rw-r--r-- | kernel/module.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/kernel/module.c b/kernel/module.c index 93342d992f34..3c5509642847 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -2878,8 +2878,7 @@ static struct module *load_module(void __user *umod, | |||
2878 | } | 2878 | } |
2879 | 2879 | ||
2880 | /* This has to be done once we're sure module name is unique. */ | 2880 | /* This has to be done once we're sure module name is unique. */ |
2881 | if (!mod->taints || mod->taints == (1U<<TAINT_CRAP)) | 2881 | dynamic_debug_setup(info.debug, info.num_debug); |
2882 | dynamic_debug_setup(info.debug, info.num_debug); | ||
2883 | 2882 | ||
2884 | /* Find duplicate symbols */ | 2883 | /* Find duplicate symbols */ |
2885 | err = verify_export_symbols(mod); | 2884 | err = verify_export_symbols(mod); |
@@ -2915,8 +2914,7 @@ static struct module *load_module(void __user *umod, | |||
2915 | module_bug_cleanup(mod); | 2914 | module_bug_cleanup(mod); |
2916 | 2915 | ||
2917 | ddebug: | 2916 | ddebug: |
2918 | if (!mod->taints || mod->taints == (1U<<TAINT_CRAP)) | 2917 | dynamic_debug_remove(info.debug); |
2919 | dynamic_debug_remove(info.debug); | ||
2920 | unlock: | 2918 | unlock: |
2921 | mutex_unlock(&module_mutex); | 2919 | mutex_unlock(&module_mutex); |
2922 | synchronize_sched(); | 2920 | synchronize_sched(); |