|
@@ -2816,18 +2816,6 @@ static struct module *load_module(void __user *umod,
|
|
|
kfree(info.strmap);
|
|
|
free_copy(&info);
|
|
|
|
|
|
- /* Set RO and NX regions for core */
|
|
|
- set_section_ro_nx(mod->module_core,
|
|
|
- mod->core_text_size,
|
|
|
- mod->core_ro_size,
|
|
|
- mod->core_size);
|
|
|
-
|
|
|
- /* Set RO and NX regions for init */
|
|
|
- set_section_ro_nx(mod->module_init,
|
|
|
- mod->init_text_size,
|
|
|
- mod->init_ro_size,
|
|
|
- mod->init_size);
|
|
|
-
|
|
|
/* Done! */
|
|
|
trace_module_load(mod);
|
|
|
return mod;
|
|
@@ -2888,6 +2876,18 @@ SYSCALL_DEFINE3(init_module, void __user *, umod,
|
|
|
blocking_notifier_call_chain(&module_notify_list,
|
|
|
MODULE_STATE_COMING, mod);
|
|
|
|
|
|
+ /* Set RO and NX regions for core */
|
|
|
+ set_section_ro_nx(mod->module_core,
|
|
|
+ mod->core_text_size,
|
|
|
+ mod->core_ro_size,
|
|
|
+ mod->core_size);
|
|
|
+
|
|
|
+ /* Set RO and NX regions for init */
|
|
|
+ set_section_ro_nx(mod->module_init,
|
|
|
+ mod->init_text_size,
|
|
|
+ mod->init_ro_size,
|
|
|
+ mod->init_size);
|
|
|
+
|
|
|
do_mod_ctors(mod);
|
|
|
/* Start the module */
|
|
|
if (mod->init != NULL)
|