Patch "powerpc/kprobes: Pause function_graph tracing during jprobes handling" has been added to the 3.18-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
powerpc/kprobes: Pause function_graph tracing during jprobes handling
to the 3.18-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
powerpc-kprobes-pause-function_graph-tracing-during-jprobes-handling.patch
and it can be found in the queue-3.18 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
a9f8553e935f26cb5447f67e280946b0923cd2dcMon Sep 17 00:00:00 2001
From: "Naveen N. Rao" <[email protected]>
Date: Thu, 1 Jun 2017 16:18:15 +0530
Subject: powerpc/kprobes: Pause function_graph tracing during jprobes handling
From: Naveen N. Rao <[email protected]>
commit a9f8553e935f26cb5447f67e280946b0923cd2dc upstream.
This fixes a crash when function_graph and jprobes are used together. This is essentially commit 237d28db036e ("ftrace/jprobes/x86: Fix conflict between jprobes and function graph tracing"), but for powerpc.
Jprobes breaks function_graph tracing since the jprobe hook needs to use jprobe_return(), which never returns back to the hook, but instead to the original jprobe'd function. The solution is to momentarily pause function_graph tracing before invoking the jprobe hook and re-enable it when returning back to the original jprobe'd function.
--- arch/powerpc/kernel/kprobes.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
arch/powerpc/kernel/kprobes.c +11 -0
@@ -514,6 +514,15 @@ int __kprobes setjmp_pre_handler(struct#endif #endif +/* +* jprobes use jprobe_return() which skips the normal return +* path of the function, and this messes up the accounting of the +* function graph tracer. +* +* Pause function graph tracing while performing the jprobe function. +*/ +pause_graph_tracing (); +return 1 ; }
@@ -536,6 +545,8 @@ int __kprobes longjmp_break_handler(stru* saved regs... */ memcpy (regs, &kcb->jprobe_saved_regs,sizeof (struct pt_regs )); +/* It's OK to start function graph tracing again */ +unpause_graph_tracing ();preempt_enable_no_resched ();return 1 ; }
Patches currently in stable-queue which might be from [email protected] are
queue-3.18/powerpc-kprobes-pause-function_graph-tracing-during-jprobes-handling.patch