diff --git a/[refs] b/[refs] index be1cc9d8ba39..fc9f2982b7ab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2668db9111bb1a6ab5a54f41f703179f35c7d098 +refs/heads/master: 6c5db22d280302c33dafb309c25bf2841fb99c37 diff --git a/trunk/kernel/module.c b/trunk/kernel/module.c index be4807fb90e4..68d05d2f4d8a 100644 --- a/trunk/kernel/module.c +++ b/trunk/kernel/module.c @@ -2179,9 +2179,11 @@ sys_init_module(void __user *umod, return ret; } - /* Now it's a first class citizen! */ - mutex_lock(&module_mutex); + /* Now it's a first class citizen! Wake up anyone waiting for it. */ mod->state = MODULE_STATE_LIVE; + wake_up(&module_wq); + + mutex_lock(&module_mutex); /* Drop initial reference. */ module_put(mod); unwind_remove_table(mod->unwind_info, 1); @@ -2190,7 +2192,6 @@ sys_init_module(void __user *umod, mod->init_size = 0; mod->init_text_size = 0; mutex_unlock(&module_mutex); - wake_up(&module_wq); return 0; }