diff options
Diffstat (limited to 'kernel/module.c')
-rw-r--r-- | kernel/module.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/kernel/module.c b/kernel/module.c index c268a771595c..e797812a4d95 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -1952,9 +1952,6 @@ static noinline struct module *load_module(void __user *umod, | |||
1952 | if (strstarts(secstrings+sechdrs[i].sh_name, ".exit")) | 1952 | if (strstarts(secstrings+sechdrs[i].sh_name, ".exit")) |
1953 | sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC; | 1953 | sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC; |
1954 | #endif | 1954 | #endif |
1955 | /* Don't keep __versions around; it's just for loading. */ | ||
1956 | if (strcmp(secstrings + sechdrs[i].sh_name, "__versions") == 0) | ||
1957 | sechdrs[i].sh_flags &= ~(unsigned long)SHF_ALLOC; | ||
1958 | } | 1955 | } |
1959 | 1956 | ||
1960 | modindex = find_sec(hdr, sechdrs, secstrings, | 1957 | modindex = find_sec(hdr, sechdrs, secstrings, |
@@ -2391,6 +2388,9 @@ SYSCALL_DEFINE3(init_module, void __user *, umod, | |||
2391 | blocking_notifier_call_chain(&module_notify_list, | 2388 | blocking_notifier_call_chain(&module_notify_list, |
2392 | MODULE_STATE_LIVE, mod); | 2389 | MODULE_STATE_LIVE, mod); |
2393 | 2390 | ||
2391 | /* We need to finish all async code before the module init sequence is done */ | ||
2392 | async_synchronize_full(); | ||
2393 | |||
2394 | mutex_lock(&module_mutex); | 2394 | mutex_lock(&module_mutex); |
2395 | /* Drop initial reference. */ | 2395 | /* Drop initial reference. */ |
2396 | module_put(mod); | 2396 | module_put(mod); |