1 // SPDX-License-Identifier: GPL-2.0-or-later 1 2 #include <linux/rethook.h> 3 #include <linux/kprobes.h> 4 #include "rethook.h" 5 6 void arch_rethook_prepare(struct rethook_node 7 { 8 rh->ret_addr = regs->gprs[14]; 9 rh->frame = regs->gprs[15]; 10 11 /* Replace the return addr with trampo 12 regs->gprs[14] = (unsigned long)&arch_ 13 } 14 NOKPROBE_SYMBOL(arch_rethook_prepare); 15 16 void arch_rethook_fixup_return(struct pt_regs 17 unsigned long c 18 { 19 /* Replace fake return address with re 20 regs->gprs[14] = correct_ret_addr; 21 } 22 NOKPROBE_SYMBOL(arch_rethook_fixup_return); 23 24 /* 25 * Called from arch_rethook_trampoline 26 */ 27 unsigned long arch_rethook_trampoline_callback 28 { 29 return rethook_trampoline_handler(regs 30 } 31 NOKPROBE_SYMBOL(arch_rethook_trampoline_callba 32 33 /* assembler function that handles the rethook 34 NOKPROBE_SYMBOL(arch_rethook_trampoline); 35
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.