summaryrefslogtreecommitdiffstats
path: root/kernel/irq
diff options
context:
space:
mode:
authorSteven Rostedt (VMware) <rostedt@goodmis.org>2020-10-29 19:35:08 -0400
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2020-11-02 08:52:18 -0500
commit726b3d3f141fba6f841d715fc4d8a4a84f02c02a (patch)
tree75ae6f8cb258c440e1c1a5688ad6e9caa6fca212 /kernel/irq
parentee11b93f95eabdf8198edd4668bf9102e7248270 (diff)
downloadlinux-726b3d3f141fba6f841d715fc4d8a4a84f02c02a.tar.bz2
ftrace: Handle tracing when switching between context
When an interrupt or NMI comes in and switches the context, there's a delay from when the preempt_count() shows the update. As the preempt_count() is used to detect recursion having each context have its own bit get set when tracing starts, and if that bit is already set, it is considered a recursion and the function exits. But if this happens in that section where context has changed but preempt_count() has not been updated, this will be incorrectly flagged as a recursion. To handle this case, create another bit call TRANSITION and test it if the current context bit is already set. Flag the call as a recursion if the TRANSITION bit is already set, and if not, set it and continue. The TRANSITION bit will be cleared normally on the return of the function that set it, or if the current context bit is clear, set it and clear the TRANSITION bit to allow for another transition between the current context and an even higher one. Cc: stable@vger.kernel.org Fixes: edc15cafcbfa3 ("tracing: Avoid unnecessary multiple recursion checks") Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Diffstat (limited to 'kernel/irq')
0 files changed, 0 insertions, 0 deletions