module: release codetag section when module load fails
authorDavid Wang <00107082@163.com>
Mon, 19 May 2025 16:38:23 +0000 (00:38 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Sun, 25 May 2025 07:53:47 +0000 (00:53 -0700)
When module load fails after memory for codetag section is ready, codetag
section memory will not be properly released.  This causes memory leak,
and if next module load happens to get the same module address, codetag
may pick the uninitialized section when manipulating tags during module
unload, and leads to "unable to handle page fault" BUG.

Link: https://lkml.kernel.org/r/20250519163823.7540-1-00107082@163.com
Fixes: 0db6f8d7820a ("alloc_tag: load module tags into separate contiguous memory")
Closes: https://lore.kernel.org/all/20250516131246.6244-1-00107082@163.com/
Signed-off-by: David Wang <00107082@163.com>
Acked-by: Suren Baghdasaryan <surenb@google.com>
Cc: Petr Pavlu <petr.pavlu@suse.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
kernel/module/main.c

index a2859dc3eea66ec19991e7e4afb5bbcae2c2d167..5c6ab20240a6d6107779bd0516eb03aee60afebf 100644 (file)
@@ -2829,6 +2829,7 @@ static void module_deallocate(struct module *mod, struct load_info *info)
 {
        percpu_modfree(mod);
        module_arch_freeing_init(mod);
+       codetag_free_module_sections(mod);
 
        free_mod_mem(mod);
 }