From: steve.capper@linaro.org (Steve Capper)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 0/6] arm64: Add kernel probes (kprobes) support
Date: Mon, 12 Jan 2015 14:09:19 +0000 [thread overview]
Message-ID: <20150112140918.GD24728@linaro.org> (raw)
In-Reply-To: <1420949002-3726-1-git-send-email-dave.long@linaro.org>
On Sat, Jan 10, 2015 at 11:03:15PM -0500, David Long wrote:
> From: "David A. Long" <dave.long@linaro.org>
>
> This patchset is heavily based on Sandeepa Prabhu's ARM v8 kprobes patches, first
> seen in October 2013. This version attempts to address concerns raised by
> reviewers and also fixes problems discovered during testing, particularly during
> SMP testing.
>
> This patchset adds support for kernel probes(kprobes), jump probes(jprobes)
> and return probes(kretprobes) support for ARM64.
>
> The kprobes mechanism makes use of software breakpoint and single stepping
> support available in the ARM v8 kernel.
>
> Changes since v2 include:
>
> 1) Removal of NOP padding in kprobe XOL slots. Slots are now exactly one
> instruction long.
> 2) Disabling of interrupts during execution in single-step mode.
> 3) Fixing of numerous problems in instruction simulation code (mostly
> thanks to Will Cohen).
> 4) Support for the HAVE_REGS_AND_STACK_ACCESS_API feature is added, to allow
> access to kprobes through debugfs.
> 5) kprobes is *not* enabled in defconfig.
> 6) Numerous complaints from checkpatch have been cleaned up, although a couple
> remain as removing the function pointer typedefs results in ugly code.
>
> Changes since v3 include:
>
> 1) Remove table-driven instruction parsing and replace with an if statement
> calling out to old and new instruction test functions in insn.c.
> 2) I removed the addition of orig_x0 to ptrace.h.
> 3) Reorder the patches.
> 4) Replace the previous interrupt disabling (from Will Cohen) with
> an improved solution (from Steve Capper).
Hi David,
I've left feedback on the patches in the series.
I ran into two major issues:
1) trampoline_probe_handler had an errant call to:
kprobes_restore_local_irqflag (this caused crashes for me until
I removed it).
2) I couldn't see how kprobe_fault_handler is called.
I've performed my memcpy tests on Juno running 3.19-rc3, and it appears
stable once trampoline_probe_handler is adjusted.
Cheers,
--
Steve
>
> David A. Long (2):
> arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature
> arm64: Add more test functions to insn.c
>
> Sandeepa Prabhu (4):
> arm64: Kprobes with single stepping support
> arm64: Kprobes instruction simulation support
> arm64: Add kernel return probes support(kretprobes)
> kprobes: Add arm64 case in kprobe example module
>
> arch/arm64/Kconfig | 3 +
> arch/arm64/include/asm/insn.h | 21 +-
> arch/arm64/include/asm/kprobes.h | 61 +++
> arch/arm64/include/asm/probes.h | 50 +++
> arch/arm64/include/asm/ptrace.h | 32 +-
> arch/arm64/include/uapi/asm/ptrace.h | 36 ++
> arch/arm64/kernel/Makefile | 3 +
> arch/arm64/kernel/insn.c | 18 +
> arch/arm64/kernel/kprobes-arm64.c | 161 +++++++
> arch/arm64/kernel/kprobes-arm64.h | 30 ++
> arch/arm64/kernel/kprobes.c | 692 +++++++++++++++++++++++++++++++
> arch/arm64/kernel/kprobes.h | 30 ++
> arch/arm64/kernel/probes-condn-check.c | 122 ++++++
> arch/arm64/kernel/probes-simulate-insn.c | 174 ++++++++
> arch/arm64/kernel/probes-simulate-insn.h | 33 ++
> arch/arm64/kernel/ptrace.c | 119 ++++++
> arch/arm64/kernel/vmlinux.lds.S | 1 +
> samples/kprobes/kprobe_example.c | 8 +
> 18 files changed, 1591 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/probes-condn-check.c
> create mode 100644 arch/arm64/kernel/probes-simulate-insn.c
> create mode 100644 arch/arm64/kernel/probes-simulate-insn.h
>
> --
> 1.8.1.2
>
next prev parent reply other threads:[~2015-01-12 14:09 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-11 4:03 [PATCH v4 0/6] arm64: Add kernel probes (kprobes) support David Long
2015-01-11 4:03 ` [PATCH v4 1/6] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long
2015-01-12 12:51 ` Steve Capper
2015-01-15 7:07 ` Masami Hiramatsu
2015-01-11 4:03 ` [PATCH v4 2/6] arm64: Add more test functions to insn.c David Long
2015-01-14 9:32 ` Pratyush Anand
2015-01-16 21:27 ` David Long
2015-01-11 4:03 ` [PATCH v4 3/6] arm64: Kprobes with single stepping support David Long
2015-01-12 13:31 ` Steve Capper
2015-01-14 9:30 ` Pratyush Anand
2015-01-16 19:28 ` David Long
2015-01-19 9:03 ` Pratyush Anand
2015-01-21 18:02 ` David Long
2015-01-11 4:03 ` [PATCH v4 4/6] arm64: Kprobes instruction simulation support David Long
2015-01-14 9:32 ` Pratyush Anand
2015-01-16 21:34 ` David Long
2015-01-11 4:03 ` [PATCH v4 5/6] arm64: Add kernel return probes support(kretprobes) David Long
2015-01-12 14:01 ` Steve Capper
2015-01-11 4:03 ` [PATCH v4 6/6] kprobes: Add arm64 case in kprobe example module David Long
2015-01-12 14:09 ` Steve Capper [this message]
2015-01-14 11:55 ` [PATCH v4 0/6] arm64: Add kernel probes (kprobes) support Pratyush Anand
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150112140918.GD24728@linaro.org \
--to=steve.capper@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).