Thread (11 messages) 11 messages, 3 authors, 2021-10-27

[PATCH v5 0/2] fix & prevent the missing preemption disabling

flat view
STALE1825d SUPERSEDED

From: 王贇 <hidden>
Date: 2021-10-26 03:14:15
Also in: linux-riscv, live-patching, lkml
Subsystem: c-sky architecture, function hooks (ftrace), linux for powerpc (32-bit and 64-bit), live patching, parisc architecture, risc-v architecture, the rest, tracing, x86 architecture (32-bit and 64-bit) · Maintainers: Guo Ren, Steven Rostedt, Masami Hiramatsu, Madhavan Srinivasan, Josh Poimboeuf, Miroslav Benes, Petr Mladek, Joe Lawrence, Song Liu, "James E.J. Bottomley", Helge Deller, Paul Walmsley, Palmer Dabbelt, Albert Ou, Linus Torvalds, Thomas Gleixner, Ingo Molnar, Borislav Petkov, Dave Hansen

Status: Superseded by v7 (posted 2021-10-27). [go to v7]

Revision v5 (6 revisions archived).

Revisions (6)
  1. v2 re-posted go to this post
  2. v3 [diff against previous]
  3. v4 [diff against previous]
  4. v5 current [diff against previous]
  5. v6 [diff against previous]
  6. v7 [diff against previous]
The testing show that perf_ftrace_function_call() are using smp_processor_id()
with preemption enabled, all the checking on CPU could be wrong after preemption.

As Peter point out, the section between ftrace_test_recursion_trylock/unlock()
pair require the preemption to be disabled as 'Documentation/trace/ftrace-uses.rst'
explained, but currently the work is done outside of the helpers.

And since the internal using of trace_test_and_set_recursion()
and trace_clear_recursion() also require preemption to be disabled, we
can just merge the logical together.

Patch 1/2 will make sure preemption disabled when recursion lock succeed,
patch 2/2 will do smp_processor_id() checking after trylock() to address the
issue.

v1: https://lore.kernel.org/all/8c7de46d-9869-aa5e-2bb9-5dbc2eda395e@linux.alibaba.com/ (local)
v2: https://lore.kernel.org/all/b1d7fe43-ce84-0ed7-32f7-ea1d12d0b716@linux.alibaba.com/ (local)
v3: https://lore.kernel.org/all/609b565a-ed6e-a1da-f025-166691b5d994@linux.alibaba.com/ (local)
V4: https://lore.kernel.org/all/32a36348-69ee-6464-390c-3a8d6e9d2b53@linux.alibaba.com/ (local)

Michael Wang (2):
  ftrace: disable preemption when recursion locked
  ftrace: do CPU checking after preemption disabled

 arch/csky/kernel/probes/ftrace.c     |  2 --
 arch/parisc/kernel/ftrace.c          |  2 --
 arch/powerpc/kernel/kprobes-ftrace.c |  2 --
 arch/riscv/kernel/probes/ftrace.c    |  2 --
 arch/x86/kernel/kprobes/ftrace.c     |  2 --
 include/linux/trace_recursion.h      | 11 ++++++++++-
 kernel/livepatch/patch.c             | 13 +++++++------
 kernel/trace/ftrace.c                | 15 +++++----------
 kernel/trace/trace_event_perf.c      |  6 +++---
 kernel/trace/trace_functions.c       |  5 -----
 10 files changed, 25 insertions(+), 35 deletions(-)

-- 
1.8.3.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help