riscv: alternative: proceed one more instruction for auipc/jalr pair
authorJisheng Zhang <jszhang@kernel.org>
Sun, 15 Jan 2023 16:28:11 +0000 (00:28 +0800)
committerPalmer Dabbelt <palmer@rivosinc.com>
Wed, 22 Feb 2023 01:21:50 +0000 (17:21 -0800)
If we patched auipc + jalr pair, we'd better proceed one more
instruction. Andrew pointed out "There's not a problem now, since
we're only adding a fixup for jal, not jalr, but we should
future-proof this and there's no reason to revisit an already fixed-up
instruction anyway."

Signed-off-by: Jisheng Zhang <jszhang@kernel.org>
Suggested-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Link: https://lore.kernel.org/r/20230115162811.3146-1-jszhang@kernel.org
Signed-off-by: Palmer Dabbelt <palmer@rivosinc.com>
arch/riscv/kernel/alternative.c

index fc341b69bf6204cf7a026b2e82f3e8d6c9a81a8d..2354c69dc7d1e6ae47e126b5739bac7ba9bee10a 100644 (file)
@@ -122,6 +122,7 @@ void riscv_alternative_fix_offsets(void *alt_ptr, unsigned int len,
 
                        riscv_alternative_fix_auipc_jalr(alt_ptr + i * sizeof(u32),
                                                         insn, insn2, patch_offset);
+                       i++;
                }
 
                if (riscv_insn_is_jal(insn)) {