X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=kernel%2Fmodule.c;h=e797812a4d95f164bb377447a62de3089c0ba182;hb=e18e37e50966f137f8a3b807fe0da7703779be34;hp=f6e08b7cff7c23292a0cf6a1c5830af9de49431f;hpb=cab4e4c43f92582a2bfc026137b3d8a175bd0360;p=mv-sheeva.git diff --git a/kernel/module.c b/kernel/module.c index f6e08b7cff7..e797812a4d9 100644 --- a/kernel/module.c +++ b/kernel/module.c @@ -1952,9 +1952,6 @@ static noinline struct module *load_module(void __user *umod, if (strstarts(secstrings+sechdrs[i].sh_name, ".exit")) sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC; #endif - /* Don't keep __versions around; it's just for loading. */ - if (strcmp(secstrings + sechdrs[i].sh_name, "__versions") == 0) - sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC; } modindex = find_sec(hdr, sechdrs, secstrings, @@ -2391,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod, blocking_notifier_call_chain(&module_notify_list, MODULE_STATE_LIVE, mod); + /* We need to finish all async code before the module init sequence is done */ + async_synchronize_full(); + mutex_lock(&module_mutex); /* Drop initial reference. */ module_put(mod); @@ -2777,7 +2777,7 @@ bool is_module_address(unsigned long addr) * Must be called with preempt disabled or module mutex held so that * module doesn't get freed during this. */ -__notrace_funcgraph struct module *__module_address(unsigned long addr) +struct module *__module_address(unsigned long addr) { struct module *mod;