[PATCH RFC v1 0/5] ARM64 kernel probes(kprobes) support

Sandeepa Prabhu sandeepa.prabhu at linaro.org
Tue Oct 1 11:57:55 EDT 2013


This patchset adds support for basic kernel probes(kprobes), jump probes(jprobes)
and return probes(kretprobes) support for AArch64.

This kprobes mechanism make use of software breakpoint and single stepping
support available in ARM v8 kernel.

Basic verification is done with sample test modules available as part of
"samples/kprobes/" running on ARM v8 fast model (RTSM). 

Patch 1 (AArch64-Add-single-step-and-breakpoint-handler-hooks.patch) is v3 version of: 
	http://permalink.gmane.org/gmane.linux.ports.arm.kernel/269733

Changes:
  v2 -> v3
  - Renamed break_lock to break_hook_lock
  - Use rcu protected list traversal for step_hook
  - eliminated addr argument for debug hooks, now callback functions shall extract address from pt_regs instead.
  - refined entry.S changes only to handler 'BRK64' esr value.

Patch 2 (arm64-Kernel-code-patching-support.patch) implement basic code patching support needed for kprobes. 
Similar api is published earlier on LKML/LAKML as part of jump label support: https://lkml.org/lkml/2013/9/25/250  
However, for kprobes some changes required with that version, can rebase on new version of patch from Jiang.


Sandeepa Prabhu (5):
  AArch64: Add single-step and breakpoint handler hooks
  arm64: Kernel code patching support
  AArch64: Instruction simulation and decode support
  AArch64: Add Kprobes support for ARM v8 kernel
  AArch64: Support kretprobe support for ARM v8

 arch/arm64/Kconfig                      |   2 +
 arch/arm64/include/asm/debug-monitors.h |  23 ++
 arch/arm64/include/asm/kprobes.h        |  58 +++
 arch/arm64/include/asm/probes.h         |  48 +++
 arch/arm64/include/asm/ptrace.h         |   6 +
 arch/arm64/kernel/Makefile              |   2 +
 arch/arm64/kernel/debug-monitors.c      |  85 ++++-
 arch/arm64/kernel/entry.S               |   2 +
 arch/arm64/kernel/kprobes-arm64.c       | 245 ++++++++++++
 arch/arm64/kernel/kprobes-arm64.h       |  26 ++
 arch/arm64/kernel/kprobes.c             | 642 ++++++++++++++++++++++++++++++++
 arch/arm64/kernel/kprobes.h             |  28 ++
 arch/arm64/kernel/patch.c               |  58 +++
 arch/arm64/kernel/patch.h               |  20 +
 arch/arm64/kernel/probes-aarch64.c      | 235 ++++++++++++
 arch/arm64/kernel/probes-aarch64.h      | 127 +++++++
 arch/arm64/kernel/probes-common.c       | 117 ++++++
 arch/arm64/kernel/vmlinux.lds.S         |   1 +
 18 files changed, 1722 insertions(+), 3 deletions(-)
 create mode 100644 arch/arm64/include/asm/kprobes.h
 create mode 100644 arch/arm64/include/asm/probes.h
 create mode 100644 arch/arm64/kernel/kprobes-arm64.c
 create mode 100644 arch/arm64/kernel/kprobes-arm64.h
 create mode 100644 arch/arm64/kernel/kprobes.c
 create mode 100644 arch/arm64/kernel/kprobes.h
 create mode 100644 arch/arm64/kernel/patch.c
 create mode 100644 arch/arm64/kernel/patch.h
 create mode 100644 arch/arm64/kernel/probes-aarch64.c
 create mode 100644 arch/arm64/kernel/probes-aarch64.h
 create mode 100644 arch/arm64/kernel/probes-common.c

-- 
1.8.1.2




More information about the linux-arm-kernel mailing list