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

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
Loading
Loading
Loading
Loading
+6 −9
Original line number Diff line number Diff line
@@ -504,7 +504,7 @@ static int restore_r2(const char *name, u32 *instruction, struct module *me)
	u32 *prev_insn = instruction - 1;

	if (is_mprofile_ftrace_call(name))
		return 1;
		return 0;

	/*
	 * 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)
	 * restore afterwards.
	 */
	if (!instr_is_relative_link_branch(ppc_inst(*prev_insn)))
		return 1;
		return 0;

	if (*instruction != PPC_RAW_NOP()) {
		pr_err("%s: Expected nop after call, got %08x at %pS\n",
			me->name, *instruction, instruction);
		return 0;
		return -ENOEXEC;
	}

	/* ld r2,R2_STACK_OFFSET(r1) */
	if (patch_instruction(instruction, ppc_inst(PPC_INST_LD_TOC)))
		return 0;

	return 1;
	return patch_instruction(instruction, ppc_inst(PPC_INST_LD_TOC));
}

int apply_relocate_add(Elf64_Shdr *sechdrs,
@@ -648,7 +645,7 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
						strtab + sym->st_name);
				if (!value)
					return -ENOENT;
				if (!restore_r2(strtab + sym->st_name,
				if (restore_r2(strtab + sym->st_name,
					       (u32 *)location + 1, me))
					return -ENOEXEC;
			} else