Skip to content

kprobes: Unify kretprobe trampoline handlers and make kretprobe lockless

Masami Hiramatsu linux-arch lkml 5 versions – Applied

Status from this message: The following commit has been merged into the perf/kprobes branch of tip:

Get series with b4
b4 am 159870598914.1229682.15230803449082078353.stgit@devnote2

Versions newest first · linked by author and title

  1. v5 Latest21 patches 30 repliesApplied
  2. v423 patches 17 repliesSuperseded
  3. v316 patches 3 repliesSuperseded
Earlier versions · 2
VersionPostedPatchesRepliesStatus
v215 patches4 repliesSuperseded
v1 RFC14 patches4 repliesSuperseded

Patches in v5 Applied

#Subject and filesSizeRepliesApplied
1/21kprobes: Add generic kretprobe trampoline handlerinclude/linux/kprobes.h kernel/kprobes.c+126 -40 replies
2/21x86/kprobes: Use generic kretprobe trampoline handlerarch/x86/kernel/kprobes/core.c+3 -1050 replies
3/21arm: kprobes: Use generic kretprobe trampoline handlerarch/arm/probes/kprobes/core.c+3 -750 replies
4/21arm64: kprobes: Use generic kretprobe trampoline handlerarch/arm64/kernel/probes/kprobes.c+3 -750 replies
5/21arc: kprobes: Use generic kretprobe trampoline handlerarch/arc/kernel/kprobes.c+2 -520 replies
6/21csky: kprobes: Use generic kretprobe trampoline handlerarch/csky/kernel/probes/kprobes.c+2 -750 replies
7/21ia64: kprobes: Use generic kretprobe trampoline handlerarch/ia64/kernel/kprobes.c+2 -750 replies
8/21mips: kprobes: Use generic kretprobe trampoline handlerarch/mips/kernel/kprobes.c+3 -510 replies
9/21parisc: kprobes: Use generic kretprobe trampoline handlerarch/parisc/kernel/kprobes.c+4 -720 replies
10/21powerpc: kprobes: Use generic kretprobe trampoline handlerarch/powerpc/kernel/kprobes.c+3 -500 replies
11/21s390: kprobes: Use generic kretprobe trampoline handlerarch/s390/kernel/kprobes.c+2 -770 replies
12/21sh: kprobes: Use generic kretprobe trampoline handlerarch/sh/kernel/kprobes.c+3 -550 replies
13/21sparc: kprobes: Use generic kretprobe trampoline handlerarch/sparc/kernel/kprobes.c+3 -480 replies
14/21kprobes: Remove NMI context checkkernel/kprobes.c+4 -1210 replies
15/21kprobes: Free kretprobe_instance with rcu callbackinclude/linux/kprobes.h kernel/kprobes.c+10 -210 replies
16/21kprobes: Make local used functions staticinclude/linux/kprobes.h kernel/kprobes.c+4 -200 replies
17/21llist: Add nonatomic __llist_add() and __llist_dell_all()drivers/gpu/drm/i915/i915_request.c include/linux/llist.h+23 -62 replies
18/21kprobes: Remove kretprobe hashinclude/linux/kprobes.h include/linux/sched.h kernel/fork.c +2 more+97 -1690 replies
19/21asm-generic/atomic: Add try_cmpxchg() fallbacksarch/x86/include/asm/atomic.h arch/x86/include/asm/atomic64_64.h arch/x86/include/asm/cmpxchg.h +5 more+372 -1221 reply
20/21freelist: Lock less freelistinclude/linux/freelist.h+129 -00 replies
21/21kprobes: Replace rp->free_instance with freelistinclude/linux/kprobes.h kernel/kprobes.c+28 -360 replies

Reviews trailers per patch

3 of 21 patches have a Reviewed-by or Acked-by.

PatchWill DeaconGuo RenMasami Hiramatsu
1/21
2/21
3/21
4/21
5/21
6/21A-b
7/21
8/21
9/21
10/21
11/21
12/21
13/21
14/21A-b A-b
15/21
16/21
17/21
18/21
19/21A-b
20/21
21/21

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v5 thread

Cover letter [PATCH v5 00/21] kprobes: Unify kretprobe trampoline handlers and make kretprobe lockless

Hi,

Here is the 5th version of the series to unify the kretprobe trampoline handler and to make the kretprobe lockless. Thanks Peter for this work !!

Previous version is here;

https://lkml.kernel.org/r/159861759775.992023.12553306821235086809.stgit@devnote2

This version merges the remove-task-scan patch into remove kretprobe hash patch, fixes code according to the comments, and fixes a minor issues.

This version is also available on
git://git.kernel.org/pub/scm/linux/kernel/git/mhiramat/linux.git lockless-kretprobe-v5

I ran smoke test and ftracetest on x86-64 and did build tests for x86-64, i386, arm, arm64, and mips.

Thank you,

---

Masami Hiramatsu (16):
kprobes: Add generic kretprobe trampoline handler x86/kprobes: Use generic kretprobe trampoline handler
arm: kprobes: Use generic kretprobe trampoline handler
arm64: kprobes: Use generic kretprobe trampoline handler
arc: kprobes: Use generic kretprobe trampoline handler
csky: kprobes: Use generic kretprobe trampoline handler
ia64: kprobes: Use generic kretprobe trampoline handler
mips: kprobes: Use generic kretprobe trampoline handler
parisc: kprobes: Use generic kretprobe trampoline handler
powerpc: kprobes: Use generic kretprobe trampoline handler
s390: kprobes: Use generic kretprobe trampoline handler
sh: kprobes: Use generic kretprobe trampoline handler
sparc: kprobes: Use generic kretprobe trampoline handler
kprobes: Remove NMI context check
kprobes: Free kretprobe_instance with rcu callback
kprobes: Make local used functions static

Peter Zijlstra (5):
llist: Add nonatomic __llist_add() and __llist_dell_all()
kprobes: Remove kretprobe hash asm-generic/atomic: Add try_cmpxchg() fallbacks
freelist: Lock less freelist
kprobes: Replace rp->free_instance with freelist

 arch/arc/kernel/kprobes.c                 |   54 ------
 arch/arm/probes/kprobes/core.c            |   78 ---------
 arch/arm64/kernel/probes/kprobes.c        |   78 ---------
 arch/csky/kernel/probes/kprobes.c         |   77 --------
 arch/ia64/kernel/kprobes.c                |   77 --------
 arch/mips/kernel/kprobes.c                |   54 ------
 arch/parisc/kernel/kprobes.c              |   76 --------
 arch/powerpc/kernel/kprobes.c             |   53 ------
 arch/s390/kernel/kprobes.c                |   79 ---------
 arch/sh/kernel/kprobes.c                  |   58 ------
 arch/sparc/kernel/kprobes.c               |   51 ------
 arch/x86/include/asm/atomic.h             |    2 
 arch/x86/include/asm/atomic64_64.h        |    2 
 arch/x86/include/asm/cmpxchg.h            |    2 
 arch/x86/kernel/kprobes/core.c            |  108 ------------
 drivers/gpu/drm/i915/i915_request.c       |    6 -
 include/asm-generic/atomic-instrumented.h |  216 ++++++++++++++----------
 include/linux/atomic-arch-fallback.h      |   90 +++++++++-
 include/linux/atomic-fallback.h           |   90 +++++++++-
 include/linux/freelist.h                  |  129 ++++++++++++++
 include/linux/kprobes.h                   |   74 +++++---
 include/linux/llist.h                     |   23 +++
 include/linux/sched.h                     |    4 
 kernel/fork.c                             |    4 
 kernel/kprobes.c                          |  264 +++++++++++++----------------
 kernel/trace/trace_kprobe.c               |    3 
 scripts/atomic/gen-atomic-fallback.sh     |   63 ++++++-
 scripts/atomic/gen-atomic-instrumented.sh |   29 +++
 28 files changed, 735 insertions(+), 1109 deletions(-)
 create mode 100644 include/linux/freelist.h

--
Masami Hiramatsu (Linaro) <[email protected]>