aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLaura Abbott <lauraa@codeaurora.org>2015-02-25 17:14:57 -0500
committerCatalin Marinas <catalin.marinas@arm.com>2015-03-06 07:04:22 -0500
commit168e47f2a6581fdbc5bb1845aeca1e50e2bc5c4b (patch)
tree7ee581a1ebe2f679139565df933ff13bb2c0beec /kernel
parent8b5f5a073fda33bbe96b3eb1bffca32010ccaf0e (diff)
kernel/module.c: Update debug alignment after symtable generation
When CONFIG_DEBUG_SET_MODULE_RONX is enabled, the sizes of module sections are aligned up so appropriate permissions can be applied. Adjusting for the symbol table may cause them to become unaligned. Make sure to re-align the sizes afterward. Signed-off-by: Laura Abbott <lauraa@codeaurora.org> Acked-by: Rusty Russell <rusty@rustcorp.com.au> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/module.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/module.c b/kernel/module.c
index b34813f725e9..cc93cf68653c 100644
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -2313,11 +2313,13 @@ static void layout_symtab(struct module *mod, struct load_info *info)
2313 info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1); 2313 info->symoffs = ALIGN(mod->core_size, symsect->sh_addralign ?: 1);
2314 info->stroffs = mod->core_size = info->symoffs + ndst * sizeof(Elf_Sym); 2314 info->stroffs = mod->core_size = info->symoffs + ndst * sizeof(Elf_Sym);
2315 mod->core_size += strtab_size; 2315 mod->core_size += strtab_size;
2316 mod->core_size = debug_align(mod->core_size);
2316 2317
2317 /* Put string table section at end of init part of module. */ 2318 /* Put string table section at end of init part of module. */
2318 strsect->sh_flags |= SHF_ALLOC; 2319 strsect->sh_flags |= SHF_ALLOC;
2319 strsect->sh_entsize = get_offset(mod, &mod->init_size, strsect, 2320 strsect->sh_entsize = get_offset(mod, &mod->init_size, strsect,
2320 info->index.str) | INIT_OFFSET_MASK; 2321 info->index.str) | INIT_OFFSET_MASK;
2322 mod->init_size = debug_align(mod->init_size);
2321 pr_debug("\t%s\n", info->secstrings + strsect->sh_name); 2323 pr_debug("\t%s\n", info->secstrings + strsect->sh_name);
2322} 2324}
2323 2325