diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2011-11-01 03:59:33 +0000 |
---|---|---|
committer | Rusty Russell <rusty@rustcorp.com.au> | 2011-11-07 07:54:40 +1030 |
commit | 1cd0d6c3021c8d76641b37203f504634b87fbabc (patch) | |
tree | e58051cdb845375c13c22bfa38db0b6fc2c71977 /kernel/module.c | |
parent | 43672a0784707d795556b1f93925da8b8e797d03 (diff) | |
download | linux-1cd0d6c3021c8d76641b37203f504634b87fbabc.tar.gz linux-1cd0d6c3021c8d76641b37203f504634b87fbabc.tar.bz2 linux-1cd0d6c3021c8d76641b37203f504634b87fbabc.zip |
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>
Diffstat (limited to 'kernel/module.c')
-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, } /* This has to be done once we're sure module name is unique. */ - if (!mod->taints || mod->taints == (1U<<TAINT_CRAP)) - dynamic_debug_setup(info.debug, info.num_debug); + dynamic_debug_setup(info.debug, info.num_debug); /* Find duplicate symbols */ err = verify_export_symbols(mod); @@ -2915,8 +2914,7 @@ static struct module *load_module(void __user *umod, module_bug_cleanup(mod); ddebug: - if (!mod->taints || mod->taints == (1U<<TAINT_CRAP)) - dynamic_debug_remove(info.debug); + dynamic_debug_remove(info.debug); unlock: mutex_unlock(&module_mutex); synchronize_sched(); |