From 8c89628b657ea02ccd8cdd4725c92330ee4902a1 Mon Sep 17 00:00:00 2001 From: Mao Minkai Date: Mon, 10 Oct 2022 14:26:25 +0800 Subject: [PATCH] sw64: fix incorrect gp after kretprobe triggered Sunway inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I5XTM4 -------------------------------- SW64 use r26 to calculate gp after function return, so r26 needs to be restored when kretprobe trampoline is hit. Signed-off-by: Mao Minkai Reviewed-by: He Sheng Signed-off-by: Gu Zitao --- arch/sw_64/kernel/kprobes/kprobes.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/sw_64/kernel/kprobes/kprobes.c b/arch/sw_64/kernel/kprobes/kprobes.c index 59f040eaa3e1..7080c892a24d 100644 --- a/arch/sw_64/kernel/kprobes/kprobes.c +++ b/arch/sw_64/kernel/kprobes/kprobes.c @@ -284,6 +284,7 @@ static int __kprobes trampoline_probe_handler(struct kprobe *p, orig_ret_address = __kretprobe_trampoline_handler(regs, kretprobe_trampoline, NULL); instruction_pointer(regs) = orig_ret_address; + regs->r26 = orig_ret_address; /* * By returning a non-zero value, we are telling -- GitLab