|
@@ -2959,7 +2959,7 @@ static struct module *load_module(void __user *umod,
|
|
|
/* Unlink carefully: kallsyms could be walking list. */
|
|
|
list_del_rcu(&mod->list);
|
|
|
module_bug_cleanup(mod);
|
|
|
-
|
|
|
+ wake_up_all(&module_wq);
|
|
|
ddebug:
|
|
|
dynamic_debug_remove(info.debug);
|
|
|
unlock:
|
|
@@ -3034,7 +3034,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
|
|
|
blocking_notifier_call_chain(&module_notify_list,
|
|
|
MODULE_STATE_GOING, mod);
|
|
|
free_module(mod);
|
|
|
- wake_up(&module_wq);
|
|
|
+ wake_up_all(&module_wq);
|
|
|
return ret;
|
|
|
}
|
|
|
if (ret > 0) {
|
|
@@ -3046,9 +3046,8 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
|
|
|
dump_stack();
|
|
|
}
|
|
|
|
|
|
- /* Now it's a first class citizen! Wake up anyone waiting for it. */
|
|
|
+ /* Now it's a first class citizen! */
|
|
|
mod->state = MODULE_STATE_LIVE;
|
|
|
- wake_up(&module_wq);
|
|
|
blocking_notifier_call_chain(&module_notify_list,
|
|
|
MODULE_STATE_LIVE, mod);
|
|
|
|
|
@@ -3071,6 +3070,7 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
|
|
|
mod->init_ro_size = 0;
|
|
|
mod->init_text_size = 0;
|
|
|
mutex_unlock(&module_mutex);
|
|
|
+ wake_up_all(&module_wq);
|
|
|
|
|
|
return 0;
|
|
|
}
|