samples: ftrace: Save required argument registers in sample trampolines
The ftrace-direct-too sample traces the handle_mm_fault function whose signature changed since the introduction of the sample. Since: commitbce617edec
("mm: do page fault accounting in handle_mm_fault") handle_mm_fault now has 4 arguments. Therefore, the sample trampoline should save 4 argument registers. s390 saves all argument registers already so it does not need a change but x86_64 needs an extra push and pop. This also evolves the signature of the tracing function to make it mirror the signature of the traced function. Link: https://lkml.kernel.org/r/20230427140700.625241-2-revest@chromium.org Cc: stable@vger.kernel.org Fixes:bce617edec
("mm: do page fault accounting in handle_mm_fault") Reviewed-by: Steven Rostedt (Google) <rostedt@goodmis.org> Reviewed-by: Mark Rutland <mark.rutland@arm.com> Acked-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Florent Revest <revest@chromium.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
This commit is contained in:
parent
06c2afb862
commit
8564c31587
|
@ -5,14 +5,14 @@
|
|||
#include <linux/ftrace.h>
|
||||
#include <asm/asm-offsets.h>
|
||||
|
||||
extern void my_direct_func(struct vm_area_struct *vma,
|
||||
unsigned long address, unsigned int flags);
|
||||
extern void my_direct_func(struct vm_area_struct *vma, unsigned long address,
|
||||
unsigned int flags, struct pt_regs *regs);
|
||||
|
||||
void my_direct_func(struct vm_area_struct *vma,
|
||||
unsigned long address, unsigned int flags)
|
||||
void my_direct_func(struct vm_area_struct *vma, unsigned long address,
|
||||
unsigned int flags, struct pt_regs *regs)
|
||||
{
|
||||
trace_printk("handle mm fault vma=%p address=%lx flags=%x\n",
|
||||
vma, address, flags);
|
||||
trace_printk("handle mm fault vma=%p address=%lx flags=%x regs=%p\n",
|
||||
vma, address, flags, regs);
|
||||
}
|
||||
|
||||
extern void my_tramp(void *);
|
||||
|
@ -34,7 +34,9 @@ asm (
|
|||
" pushq %rdi\n"
|
||||
" pushq %rsi\n"
|
||||
" pushq %rdx\n"
|
||||
" pushq %rcx\n"
|
||||
" call my_direct_func\n"
|
||||
" popq %rcx\n"
|
||||
" popq %rdx\n"
|
||||
" popq %rsi\n"
|
||||
" popq %rdi\n"
|
||||
|
|
Loading…
Reference in New Issue