summaryrefslogtreecommitdiff
path: root/kernel/module/main.c
diff options
context:
space:
mode:
authorChristophe Leroy <christophe.leroy@csgroup.eu>2024-12-05 20:46:15 +0100
committerPetr Pavlu <petr.pavlu@suse.com>2025-01-26 13:05:24 +0100
commit097fd001e1c42b5fd0a6d77cbd855ce373d7e7a2 (patch)
treecbd9e4a281f204f56a676b6df1da223db919b416 /kernel/module/main.c
parentb83815afaeecf4448cdd54b3f9dc2623ebbc3576 (diff)
module: Split module_enable_rodata_ro()
module_enable_rodata_ro() is called twice, once before module init to set rodata sections readonly and once after module init to set rodata_after_init section readonly. The second time, only the rodata_after_init section needs to be set to read-only, no need to re-apply it to already set rodata. Split module_enable_rodata_ro() in two. Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu> Tested-by: Daniel Gomez <da.gomez@samsung.com> Reviewed-by: Luis Chamberlain <mcgrof@kernel.org> Link: https://lore.kernel.org/r/e3b6ff0df7eac281c58bb02cecaeb377215daff3.1733427536.git.christophe.leroy@csgroup.eu Signed-off-by: Petr Pavlu <petr.pavlu@suse.com>
Diffstat (limited to 'kernel/module/main.c')
-rw-r--r--kernel/module/main.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/module/main.c b/kernel/module/main.c
index 8154e1665cdb0..8acec43e97dcc 100644
--- a/kernel/module/main.c
+++ b/kernel/module/main.c
@@ -2953,7 +2953,7 @@ static noinline int do_init_module(struct module *mod)
/* Switch to core kallsyms now init is done: kallsyms may be walking! */
rcu_assign_pointer(mod->kallsyms, &mod->core_kallsyms);
#endif
- ret = module_enable_rodata_ro(mod, true);
+ ret = module_enable_rodata_ro_after_init(mod);
if (ret)
goto fail_mutex_unlock;
mod_tree_remove_init(mod);
@@ -3123,7 +3123,7 @@ static int complete_formation(struct module *mod, struct load_info *info)
module_bug_finalize(info->hdr, info->sechdrs, mod);
module_cfi_finalize(info->hdr, info->sechdrs, mod);
- err = module_enable_rodata_ro(mod, false);
+ err = module_enable_rodata_ro(mod);
if (err)
goto out_strict_rwx;
err = module_enable_data_nx(mod);