Revert "arm64: probes: Fix simulate_ldr*_literal()"

This reverts commit f2ddadb749.
This commit is contained in:
Ksawlii 2024-11-24 00:22:53 +01:00
parent 11b289f4f9
commit 1b5a5af29c

View file

@ -170,15 +170,17 @@ simulate_tbz_tbnz(u32 opcode, long addr, struct pt_regs *regs)
void __kprobes
simulate_ldr_literal(u32 opcode, long addr, struct pt_regs *regs)
{
unsigned long load_addr;
u64 *load_addr;
int xn = opcode & 0x1f;
int disp;
load_addr = addr + ldr_displacement(opcode);
disp = ldr_displacement(opcode);
load_addr = (u64 *) (addr + disp);
if (opcode & (1 << 30)) /* x0-x30 */
set_x_reg(regs, xn, READ_ONCE(*(u64 *)load_addr));
set_x_reg(regs, xn, *load_addr);
else /* w0-w30 */
set_w_reg(regs, xn, READ_ONCE(*(u32 *)load_addr));
set_w_reg(regs, xn, *load_addr);
instruction_pointer_set(regs, instruction_pointer(regs) + 4);
}
@ -186,12 +188,14 @@ simulate_ldr_literal(u32 opcode, long addr, struct pt_regs *regs)
void __kprobes
simulate_ldrsw_literal(u32 opcode, long addr, struct pt_regs *regs)
{
unsigned long load_addr;
s32 *load_addr;
int xn = opcode & 0x1f;
int disp;
load_addr = addr + ldr_displacement(opcode);
disp = ldr_displacement(opcode);
load_addr = (s32 *) (addr + disp);
set_x_reg(regs, xn, READ_ONCE(*(s32 *)load_addr));
set_x_reg(regs, xn, *load_addr);
instruction_pointer_set(regs, instruction_pointer(regs) + 4);
}