ftrace.c (03ab8e6297acd1bc0eedaa050e2a1635c576fd11) ftrace.c (1a7d0890dd4a502a202aaec792a6c04e6e049547)
1// SPDX-License-Identifier: GPL-2.0
2
3#include <linux/kprobes.h>
4
5/* Ftrace callback handler for kprobes -- called under preepmt disabled */
6void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip,
7 struct ftrace_ops *ops, struct ftrace_regs *fregs)
8{
9 int bit;
10 bool lr_saver = false;
11 struct kprobe *p;
12 struct kprobe_ctlblk *kcb;
13 struct pt_regs *regs;
14
1// SPDX-License-Identifier: GPL-2.0
2
3#include <linux/kprobes.h>
4
5/* Ftrace callback handler for kprobes -- called under preepmt disabled */
6void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip,
7 struct ftrace_ops *ops, struct ftrace_regs *fregs)
8{
9 int bit;
10 bool lr_saver = false;
11 struct kprobe *p;
12 struct kprobe_ctlblk *kcb;
13 struct pt_regs *regs;
14
15 if (unlikely(kprobe_ftrace_disabled))
16 return;
17
15 bit = ftrace_test_recursion_trylock(ip, parent_ip);
16 if (bit < 0)
17 return;
18
19 regs = ftrace_get_regs(fregs);
20 p = get_kprobe((kprobe_opcode_t *)ip);
21 if (!p) {
22 p = get_kprobe((kprobe_opcode_t *)(ip - MCOUNT_INSN_SIZE));

--- 45 unchanged lines hidden ---
18 bit = ftrace_test_recursion_trylock(ip, parent_ip);
19 if (bit < 0)
20 return;
21
22 regs = ftrace_get_regs(fregs);
23 p = get_kprobe((kprobe_opcode_t *)ip);
24 if (!p) {
25 p = get_kprobe((kprobe_opcode_t *)(ip - MCOUNT_INSN_SIZE));

--- 45 unchanged lines hidden ---