diff options
| author | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-03-19 17:59:44 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2008-03-19 17:59:44 -0400 |
| commit | c7c350e92aab1bba68f26a6027b734adcf9824ba (patch) | |
| tree | aa99bd94c3049dd871d9c030d70a5f3d87591a95 /kernel/module.c | |
| parent | 2f42b5d043ee271d1e5d30ecd77186b6c4d4e534 (diff) | |
| parent | f8512ad0da16cbe156f3a7627971cdf0b39c4138 (diff) | |
Merge branch 'hotfixes' into devel
Diffstat (limited to 'kernel/module.c')
| -rw-r--r-- | kernel/module.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/kernel/module.c b/kernel/module.c index be4807fb90e4..5d437bffd8dc 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -2178,10 +2178,20 @@ sys_init_module(void __user *umod, wake_up(&module_wq); return ret; } + if (ret > 0) { + printk(KERN_WARNING "%s: '%s'->init suspiciously returned %d, " + "it should follow 0/-E convention\n" + KERN_WARNING "%s: loading module anyway...\n", + __func__, mod->name, ret, + __func__); + dump_stack(); + } - /* 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 +2200,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; } |
