powerpc/module_64: Improve restore_r2() return semantics
authorJosh Poimboeuf <jpoimboe@kernel.org>
Wed, 25 Jan 2023 03:38:04 +0000 (19:38 -0800)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 26 Jan 2023 10:08:04 +0000 (21:08 +1100)
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: Josh Poimboeuf <jpoimboe@kernel.org>
Reviewed-by: Petr Mladek <pmladek@suse.com>
Acked-by: Song Liu <song@kernel.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/15baf76c271a0ae09f7b8556e50f2b4251e7049d.1674617130.git.jpoimboe@kernel.org
arch/powerpc/kernel/module_64.c

index ff04564..85aebad 100644 (file)
@@ -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,8 +645,8 @@ int apply_relocate_add(Elf64_Shdr *sechdrs,
                                                strtab + sym->st_name);
                                if (!value)
                                        return -ENOENT;
-                               if (!restore_r2(strtab + sym->st_name,
-                                                       (u32 *)location + 1, me))
+                               if (restore_r2(strtab + sym->st_name,
+                                              (u32 *)location + 1, me))
                                        return -ENOEXEC;
                        } else
                                value += local_entry_offset(sym);