GNU Linux-libre 6.8.9-gnu
[releases.git] / arch / x86 / lib / error-inject.c
1 // SPDX-License-Identifier: GPL-2.0
2
3 #include <linux/linkage.h>
4 #include <linux/error-injection.h>
5 #include <linux/kprobes.h>
6 #include <linux/objtool.h>
7
8 asmlinkage void just_return_func(void);
9
10 asm(
11         ".text\n"
12         ".type just_return_func, @function\n"
13         ".globl just_return_func\n"
14         ASM_FUNC_ALIGN
15         "just_return_func:\n"
16                 ANNOTATE_NOENDBR
17                 ASM_RET
18         ".size just_return_func, .-just_return_func\n"
19 );
20
21 void override_function_with_return(struct pt_regs *regs)
22 {
23         regs->ip = (unsigned long)&just_return_func;
24 }
25 NOKPROBE_SYMBOL(override_function_with_return);