fgraph.c (f8bade6c9a6213c2c5ba6e5bf32415ecab6e41e5) fgraph.c (f2cc020d7876de7583feb52ec939a32419cf9468)
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Infrastructure to took into function calls and returns.
4 * Copyright (c) 2008-2009 Frederic Weisbecker <fweisbec@gmail.com>
5 * Mostly borrowed from function tracer which
6 * is Copyright (c) Steven Rostedt <srostedt@redhat.com>
7 *
8 * Highly modified by Steven Rostedt (VMware).

--- 28 unchanged lines hidden (view full) ---

37 * paths of function graph to keep those paths from doing any more harm.
38 */
39bool ftrace_graph_is_dead(void)
40{
41 return kill_ftrace_graph;
42}
43
44/**
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Infrastructure to took into function calls and returns.
4 * Copyright (c) 2008-2009 Frederic Weisbecker <fweisbec@gmail.com>
5 * Mostly borrowed from function tracer which
6 * is Copyright (c) Steven Rostedt <srostedt@redhat.com>
7 *
8 * Highly modified by Steven Rostedt (VMware).

--- 28 unchanged lines hidden (view full) ---

37 * paths of function graph to keep those paths from doing any more harm.
38 */
39bool ftrace_graph_is_dead(void)
40{
41 return kill_ftrace_graph;
42}
43
44/**
45 * ftrace_graph_stop - set to permanently disable function graph tracincg
45 * ftrace_graph_stop - set to permanently disable function graph tracing
46 *
47 * In case of an error int function graph tracing, this is called
48 * to try to keep function graph tracing from causing any more harm.
49 * Usually this is pretty severe and this is called to try to at least
50 * get a warning out to the user.
51 */
52void ftrace_graph_stop(void)
53{

--- 58 unchanged lines hidden (view full) ---

112
113int function_graph_enter(unsigned long ret, unsigned long func,
114 unsigned long frame_pointer, unsigned long *retp)
115{
116 struct ftrace_graph_ent trace;
117
118 /*
119 * Skip graph tracing if the return location is served by direct trampoline,
46 *
47 * In case of an error int function graph tracing, this is called
48 * to try to keep function graph tracing from causing any more harm.
49 * Usually this is pretty severe and this is called to try to at least
50 * get a warning out to the user.
51 */
52void ftrace_graph_stop(void)
53{

--- 58 unchanged lines hidden (view full) ---

112
113int function_graph_enter(unsigned long ret, unsigned long func,
114 unsigned long frame_pointer, unsigned long *retp)
115{
116 struct ftrace_graph_ent trace;
117
118 /*
119 * Skip graph tracing if the return location is served by direct trampoline,
120 * since call sequence and return addresses is unpredicatable anymore.
120 * since call sequence and return addresses are unpredictable anyway.
121 * Ex: BPF trampoline may call original function and may skip frame
122 * depending on type of BPF programs attached.
123 */
124 if (ftrace_direct_func_count &&
125 ftrace_find_rec_direct(ret - MCOUNT_INSN_SIZE))
126 return -EBUSY;
127 trace.func = func;
128 trace.depth = ++current->curr_ret_depth;

--- 523 unchanged lines hidden ---
121 * Ex: BPF trampoline may call original function and may skip frame
122 * depending on type of BPF programs attached.
123 */
124 if (ftrace_direct_func_count &&
125 ftrace_find_rec_direct(ret - MCOUNT_INSN_SIZE))
126 return -EBUSY;
127 trace.func = func;
128 trace.depth = ++current->curr_ret_depth;

--- 523 unchanged lines hidden ---