History

ftrace: Have the callbacks receive a struct ftrace_regs instead of pt_regs

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.

Steven Rostedt (VMware) committed 6 years ago

Commit d19ad071 parent 58954b318 files · +71 −45Browse files

Showing the changes to kernel/livepatch/patch.c (1 of 18 files). Show all

Unified · Split

kernel/livepatch/patch.c+2−1
@@ -40,8 +40,9 @@ struct klp_ops *klp_find_ops(void *old_func) · 39 unmodified lines
4040 static void notrace klp_ftrace_handler(unsigned long ip,
4141 unsigned long parent_ip,
4242 struct ftrace_ops *fops,
43− struct pt_regs *regs)
43+ struct ftrace_regs *fregs)
4444 {
45+ struct pt_regs *regs = ftrace_get_regs(fregs);
4546 struct klp_ops *ops;
4647 struct klp_func *func;
4748 int patch_state;