In preparation to have arguments of a function passed to callbacks attached to functions as default, change the default callback prototype to receive a struct ftrace_regs as the forth parameter instead of a pt_regs. For callbacks that set the FL_SAVE_REGS flag in their ftrace_ops flags, they will now need to get the pt_regs via a ftrace_get_regs() helper call. If this is called by a callback that their ftrace_ops did not have a FL_SAVE_REGS flag set, it that helper function will return NULL. This will allow the ftrace_regs to hold enough just to get the parameters and stack pointer, but without the worry that callbacks may have a pt_regs that is not completely filled.
Showing the changes to kernel/trace/trace_stack.c (1 of 18 files). Show all
Unified · Split
| @@ -290,7 +290,7 @@ static void check_stack(unsigned long ip, unsigned long *stack) · 289 unmodified lines | |||
| 290 | 290 | ||
| 291 | static void | 291 | static void |
| 292 | stack_trace_call(unsigned long ip, unsigned long parent_ip, | 292 | stack_trace_call(unsigned long ip, unsigned long parent_ip, |
| 293 | struct ftrace_ops *op, struct pt_regs *pt_regs) | 293 | struct ftrace_ops *op, struct ftrace_regs *fregs) |
| 294 | { | 294 | { |
| 295 | unsigned long stack; | 295 | unsigned long stack; |
| 296 | 296 | ||