diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-01-20 23:22:58 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-01-20 23:22:58 -0500 |
commit | ee61abb3223e28a1a14a8429c0319755d20d3e40 (patch) | |
tree | 4054f8726988c6a16264b34d6b630c6597077cda /kernel | |
parent | 226364766f936d249e408de03821468c1bf11dda (diff) |
module: fix missing module_mutex unlock
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>
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/module.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/module.c b/kernel/module.c index d25e359279ae..eab08274ec9b 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -3274,8 +3274,8 @@ again: | |||
3274 | /* module_bug_cleanup needs module_mutex protection */ | 3274 | /* module_bug_cleanup needs module_mutex protection */ |
3275 | mutex_lock(&module_mutex); | 3275 | mutex_lock(&module_mutex); |
3276 | module_bug_cleanup(mod); | 3276 | module_bug_cleanup(mod); |
3277 | mutex_unlock(&module_mutex); | ||
3278 | ddebug_cleanup: | 3277 | ddebug_cleanup: |
3278 | mutex_unlock(&module_mutex); | ||
3279 | dynamic_debug_remove(info->debug); | 3279 | dynamic_debug_remove(info->debug); |
3280 | synchronize_sched(); | 3280 | synchronize_sched(); |
3281 | kfree(mod->args); | 3281 | kfree(mod->args); |