Skip to content

Commit

Permalink
module: Enable dynamic debugging regardless of taint
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ben Hutchings authored and Rusty Russell committed Nov 6, 2011
1 parent 43672a0 commit 1cd0d6c
Showing 1 changed file with 2 additions and 4 deletions.
6 changes: 2 additions & 4 deletions kernel/module.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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();
Expand Down

0 comments on commit 1cd0d6c

Please sign in to comment.