.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | #include <linux/sched.h> |
---|
2 | 3 | #include <linux/sched/debug.h> |
---|
3 | 4 | #include <linux/stacktrace.h> |
---|
.. | .. |
---|
57 | 58 | trace->entries[trace->nr_entries++] = pc; |
---|
58 | 59 | #ifdef CONFIG_FUNCTION_GRAPH_TRACER |
---|
59 | 60 | if ((pc + 8UL) == (unsigned long) &return_to_handler) { |
---|
60 | | - int index = t->curr_ret_stack; |
---|
61 | | - if (t->ret_stack && index >= graph) { |
---|
62 | | - pc = t->ret_stack[index - graph].ret; |
---|
| 61 | + struct ftrace_ret_stack *ret_stack; |
---|
| 62 | + ret_stack = ftrace_graph_get_ret_stack(t, |
---|
| 63 | + graph); |
---|
| 64 | + if (ret_stack) { |
---|
| 65 | + pc = ret_stack->ret; |
---|
63 | 66 | if (trace->nr_entries < |
---|
64 | 67 | trace->max_entries) |
---|
65 | 68 | trace->entries[trace->nr_entries++] = pc; |
---|