Commit bc2c6f56 authored by Josh Poimboeuf's avatar Josh Poimboeuf Committed by Michael Ellerman

powerpc/module_64: Improve restore_r2() return semantics

restore_r2() returns 1 on success, which is surprising for a non-boolean
function.  Change it to return 0 on success and -errno on error to match
kernel coding convention.
Signed-off-by: default avatarJosh Poimboeuf <jpoimboe@kernel.org>
Reviewed-by: default avatarPetr Mladek <pmladek@suse.com>
Acked-by: default avatarSong Liu <song@kernel.org>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/15baf76c271a0ae09f7b8556e50f2b4251e7049d.1674617130.git.jpoimboe@kernel.org
parent 53ab112a
...@@ -504,7 +504,7 @@ static int restore_r2(const char *name, u32 *instruction, struct module *me) ...@@ -504,7 +504,7 @@ static int restore_r2(const char *name, u32 *instruction, struct module *me)
u32 *prev_insn = instruction - 1; u32 *prev_insn = instruction - 1;
if (is_mprofile_ftrace_call(name)) if (is_mprofile_ftrace_call(name))
return 1; return 0;
/* /*
* Make sure the branch isn't a sibling call. Sibling calls aren't * Make sure the branch isn't a sibling call. Sibling calls aren't
...@@ -512,19 +512,16 @@ static int restore_r2(const char *name, u32 *instruction, struct module *me) ...@@ -512,19 +512,16 @@ static int restore_r2(const char *name, u32 *instruction, struct module *me)
* restore afterwards. * restore afterwards.
*/ */
if (!instr_is_relative_link_branch(ppc_inst(*prev_insn))) if (!instr_is_relative_link_branch(ppc_inst(*prev_insn)))
return 1; return 0;
if (*instruction != PPC_RAW_NOP()) { if (*instruction != PPC_RAW_NOP()) {
pr_err("%s: Expected nop after call, got %08x at %pS\n", pr_err("%s: Expected nop after call, got %08x at %pS\n",
me->name, *instruction, instruction); me->name, *instruction, instruction);
return 0; return -ENOEXEC;
} }
/* ld r2,R2_STACK_OFFSET(r1) */ /* ld r2,R2_STACK_OFFSET(r1) */
if (patch_instruction(instruction, ppc_inst(PPC_INST_LD_TOC))) return patch_instruction(instruction, ppc_inst(PPC_INST_LD_TOC));
return 0;
return 1;
} }
int apply_relocate_add(Elf64_Shdr *sechdrs, int apply_relocate_add(Elf64_Shdr *sechdrs,
...@@ -648,8 +645,8 @@ int apply_relocate_add(Elf64_Shdr *sechdrs, ...@@ -648,8 +645,8 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
strtab + sym->st_name); strtab + sym->st_name);
if (!value) if (!value)
return -ENOENT; return -ENOENT;
if (!restore_r2(strtab + sym->st_name, if (restore_r2(strtab + sym->st_name,
(u32 *)location + 1, me)) (u32 *)location + 1, me))
return -ENOEXEC; return -ENOEXEC;
} else } else
value += local_entry_offset(sym); value += local_entry_offset(sym);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment