aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Hutchings <ben@decadent.org.uk>2011-10-31 23:59:33 -0400
committerRusty Russell <rusty@rustcorp.com.au>2011-11-06 16:24:40 -0500
commit1cd0d6c3021c8d76641b37203f504634b87fbabc (patch)
treee58051cdb845375c13c22bfa38db0b6fc2c71977
parent43672a0784707d795556b1f93925da8b8e797d03 (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.c6
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();