objtool: Make .altinstructions section entry size consistent
Commite31694e0a7
("objtool: Don't make .altinstructions writable") aligned objtool-created and kernel-created .altinstructions section flags, but there remains a minor discrepency in their use of a section entry size: objtool sets one while the kernel build does not. While sh_entsize of sizeof(struct alt_instr) seems intuitive, this small deviation can cause failures with external tooling (kpatch-build). Fix this by creating new .altinstructions sections with sh_entsize of 0 and then later updating sec->sh_size as alternatives are added to the section. An added benefit is avoiding the data descriptor and buffer created by elf_create_section(), but previously unused by elf_add_alternative(). Fixes:9bc0bb5072
("objtool/x86: Rewrite retpoline thunk calls") Signed-off-by: Joe Lawrence <joe.lawrence@redhat.com> Reviewed-by: Miroslav Benes <mbenes@suse.cz> Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com> Link: https://lore.kernel.org/r/20210822225037.54620-2-joe.lawrence@redhat.com Cc: Andy Lavr <andy.lavr@gmail.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org
This commit is contained in:
parent
4d8b35968b
commit
dc02368164
@ -684,7 +684,7 @@ static int elf_add_alternative(struct elf *elf,
|
|||||||
sec = find_section_by_name(elf, ".altinstructions");
|
sec = find_section_by_name(elf, ".altinstructions");
|
||||||
if (!sec) {
|
if (!sec) {
|
||||||
sec = elf_create_section(elf, ".altinstructions",
|
sec = elf_create_section(elf, ".altinstructions",
|
||||||
SHF_ALLOC, size, 0);
|
SHF_ALLOC, 0, 0);
|
||||||
|
|
||||||
if (!sec) {
|
if (!sec) {
|
||||||
WARN_ELF("elf_create_section");
|
WARN_ELF("elf_create_section");
|
||||||
|
Loading…
Reference in New Issue
Block a user