From 84e5ed0029cabf7a671a5761f2662a022f1e8f14 Mon Sep 17 00:00:00 2001 From: Daniel Gomez Date: Fri, 8 Nov 2024 17:12:14 +0100 Subject: [PATCH] module: avoid double ref drop on ro_after_init failure Ensure the module reference is only dropped once in case we fail at MOD_RO_AFTER_INIT case. Signed-off-by: Daniel Gomez --- kernel/module/main.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/module/main.c b/kernel/module/main.c index 0f981f40a06b0b..ed6c058463b224 100644 --- a/kernel/module/main.c +++ b/kernel/module/main.c @@ -2849,8 +2849,6 @@ static noinline int do_init_module(struct module *mod) ftrace_free_mem(mod, mod->mem[MOD_INIT_TEXT].base, mod->mem[MOD_INIT_TEXT].base + mod->mem[MOD_INIT_TEXT].size); mutex_lock(&module_mutex); - /* Drop initial reference. */ - module_put(mod); trim_init_extable(mod); #ifdef CONFIG_KALLSYMS /* Switch to core kallsyms now init is done: kallsyms may be walking! */ @@ -2859,6 +2857,8 @@ static noinline int do_init_module(struct module *mod) ret = module_enable_rodata_ro(mod, true); if (ret) goto fail_mutex_unlock; + /* Drop initial reference. */ + module_put(mod); mod_tree_remove_init(mod); module_arch_freeing_init(mod); for_class_mod_mem_type(type, init) {