Hi Steven,

Steven Rostedt wrote:
From: "Steven Rostedt (VMware)" <rost...@goodmis.org>

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.

Reviewed-by: Masami Hiramatsu <mhira...@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rost...@goodmis.org>
---
 arch/x86/kernel/kprobes/ftrace.c  |  3 ++-
 fs/pstore/ftrace.c                |  2 +-
 include/linux/ftrace.h            | 16 ++++++++++++++--
 include/linux/kprobes.h           |  2 +-
 kernel/livepatch/patch.c          |  3 ++-
 kernel/trace/ftrace.c             | 27 +++++++++++++++------------
 kernel/trace/trace_event_perf.c   |  2 +-
 kernel/trace/trace_events.c       |  2 +-
 kernel/trace/trace_functions.c    |  9 ++++-----
 kernel/trace/trace_irqsoff.c      |  2 +-
 kernel/trace/trace_sched_wakeup.c |  2 +-
 kernel/trace/trace_selftest.c     | 20 +++++++++++---------
 kernel/trace/trace_stack.c        |  2 +-
 13 files changed, 55 insertions(+), 37 deletions(-)


<snip>

diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h
index 629abaf25681..be73350955e4 100644
--- a/include/linux/kprobes.h
+++ b/include/linux/kprobes.h
@@ -345,7 +345,7 @@ static inline void wait_for_kprobe_optimizer(void) { }
 #endif /* CONFIG_OPTPROBES */
 #ifdef CONFIG_KPROBES_ON_FTRACE
 extern void kprobe_ftrace_handler(unsigned long ip, unsigned long parent_ip,
-                                 struct ftrace_ops *ops, struct pt_regs *regs);
+                                 struct ftrace_ops *ops, struct ftrace_regs 
*fregs);

This breaks the build on non-x86 architectures that support KPROBES_ON_FTRACE.

- Naveen

Reply via email to