| From ee61abb3223e28a1a14a8429c0319755d20d3e40 Mon Sep 17 00:00:00 2001 |
| From: Linus Torvalds <torvalds@linux-foundation.org> |
| Date: Sun, 20 Jan 2013 20:22:58 -0800 |
| Subject: module: fix missing module_mutex unlock |
| |
| From: Linus Torvalds <torvalds@linux-foundation.org> |
| |
| commit ee61abb3223e28a1a14a8429c0319755d20d3e40 upstream. |
| |
| Commit 1fb9341ac348 ("module: put modules in list much earlier") moved |
| some of the module initialization code around, and in the process |
| changed the exit paths too. But for the duplicate export symbol error |
| case the change made the ddebug_cleanup path jump to after the module |
| mutex unlock, even though it happens with the mutex held. |
| |
| Rusty has some patches to split this function up into some helper |
| functions, hopefully the mess of complex goto targets will go away |
| eventually. |
| |
| Reported-by: Dan Carpenter <dan.carpenter@oracle.com> |
| Cc: Rusty Russell <rusty@rustcorp.com.au> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| kernel/module.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/kernel/module.c |
| +++ b/kernel/module.c |
| @@ -3100,8 +3100,8 @@ again: |
| /* module_bug_cleanup needs module_mutex protection */ |
| mutex_lock(&module_mutex); |
| module_bug_cleanup(mod); |
| - mutex_unlock(&module_mutex); |
| ddebug_cleanup: |
| + mutex_unlock(&module_mutex); |
| dynamic_debug_remove(info.debug); |
| synchronize_sched(); |
| kfree(mod->args); |