All of lore.kernel.org
 help / color / mirror / Atom feed
From: dave.long@linaro.org (David Long)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 1/5] arm64: Kprobes with single stepping support
Date: Thu, 20 Nov 2014 23:28:32 -0500	[thread overview]
Message-ID: <546EBF70.9020706@linaro.org> (raw)
In-Reply-To: <1416317295.1735.9.camel@linaro.org>

On 11/18/14 08:28, Jon Medhurst (Tixy) wrote:
> On Tue, 2014-11-18 at 01:32 -0500, David Long wrote:
>> From: Sandeepa Prabhu <sandeepa.prabhu@linaro.org>
>>
>> Add support for basic kernel probes(kprobes) and jump probes
>> (jprobes) for ARM64.
>>
>> Kprobes will utilize software breakpoint and single step debug
>> exceptions supported on ARM v8.
>>
>> software breakpoint is placed at the probe address to trap the
>> kernel execution into kprobe handler.
>>
>> ARM v8 support single stepping to be enabled while exception return
>> (ERET) with next PC in exception return address (ELR_EL1).
>> kprobe handler prepares a executable memory slot for out-of-line
>> execution with the copy of the original instruction under probe, and
>> enable single stepping from the instruction slot. With this scheme,
>> the instruction is executed with the exact same register context
>> 'except PC' that points to instruction slot.
>>
>> Debug mask(PSTATE.D) is enabled only when single stepping a recursive
>> kprobes i.e. during kprobes reenter so that probes instruction can be
>> single stepped within the kprobe handler -exception- context.
>
> Does this mean that at the point the probed instruction is
> single-stepped there is nothing extra that has been pushed on on the
> kernel stack by any kprobes handling code? I just want to check that you
> aren't going to hit the problems that the 32-bit kprobes code is
> currently being fixed for [1].
>
> The simulated instructions in patch 2 don't access the stack, so they
> are safe from the problem.
>
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2014-November/303525.html
>

Took me a while to read through the background on this.  I believe it is 
true nothing extra is put on the stack in the single-step case.

-dl

WARNING: multiple messages have this Message-ID (diff)
From: David Long <dave.long@linaro.org>
To: "Jon Medhurst (Tixy)" <tixy@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org,
	Russell King <linux@arm.linux.org.uk>,
	Sandeepa Prabhu <sandeepa.prabhu@linaro.org>,
	William Cohen <wcohen@redhat.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Will Deacon <will.deacon@arm.com>,
	Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>,
	davem@davemloft.net, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/5] arm64: Kprobes with single stepping support
Date: Thu, 20 Nov 2014 23:28:32 -0500	[thread overview]
Message-ID: <546EBF70.9020706@linaro.org> (raw)
In-Reply-To: <1416317295.1735.9.camel@linaro.org>

On 11/18/14 08:28, Jon Medhurst (Tixy) wrote:
> On Tue, 2014-11-18 at 01:32 -0500, David Long wrote:
>> From: Sandeepa Prabhu <sandeepa.prabhu@linaro.org>
>>
>> Add support for basic kernel probes(kprobes) and jump probes
>> (jprobes) for ARM64.
>>
>> Kprobes will utilize software breakpoint and single step debug
>> exceptions supported on ARM v8.
>>
>> software breakpoint is placed at the probe address to trap the
>> kernel execution into kprobe handler.
>>
>> ARM v8 support single stepping to be enabled while exception return
>> (ERET) with next PC in exception return address (ELR_EL1).
>> kprobe handler prepares a executable memory slot for out-of-line
>> execution with the copy of the original instruction under probe, and
>> enable single stepping from the instruction slot. With this scheme,
>> the instruction is executed with the exact same register context
>> 'except PC' that points to instruction slot.
>>
>> Debug mask(PSTATE.D) is enabled only when single stepping a recursive
>> kprobes i.e. during kprobes reenter so that probes instruction can be
>> single stepped within the kprobe handler -exception- context.
>
> Does this mean that at the point the probed instruction is
> single-stepped there is nothing extra that has been pushed on on the
> kernel stack by any kprobes handling code? I just want to check that you
> aren't going to hit the problems that the 32-bit kprobes code is
> currently being fixed for [1].
>
> The simulated instructions in patch 2 don't access the stack, so they
> are safe from the problem.
>
> [1] http://lists.infradead.org/pipermail/linux-arm-kernel/2014-November/303525.html
>

Took me a while to read through the background on this.  I believe it is 
true nothing extra is put on the stack in the single-step case.

-dl


  reply	other threads:[~2014-11-21  4:28 UTC|newest]

Thread overview: 104+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-18  6:32 [PATCH v3 0/5] ARM64: Add kernel probes(Kprobes) support David Long
2014-11-18  6:32 ` David Long
2014-11-18  6:32 ` [PATCH v3 1/5] arm64: Kprobes with single stepping support David Long
2014-11-18  6:32   ` David Long
2014-11-18 13:28   ` Jon Medhurst (Tixy)
2014-11-18 13:28     ` Jon Medhurst (Tixy)
2014-11-21  4:28     ` David Long [this message]
2014-11-21  4:28       ` David Long
2014-11-18 14:38   ` William Cohen
2014-11-18 14:38     ` William Cohen
2014-11-18 14:39   ` William Cohen
2014-11-18 14:39     ` William Cohen
2014-11-18 14:56   ` Will Deacon
2014-11-18 14:56     ` Will Deacon
2014-11-19 11:21     ` Sandeepa Prabhu
2014-11-19 11:21       ` Sandeepa Prabhu
2014-11-19 11:25       ` Will Deacon
2014-11-19 11:25         ` Will Deacon
2014-11-19 14:55         ` David Long
2014-11-19 14:55           ` David Long
2014-11-20  5:10           ` Sandeepa Prabhu
2014-11-20  5:10             ` Sandeepa Prabhu
2014-11-26  6:46           ` David Long
2014-11-26  6:46             ` David Long
2014-11-26 10:09             ` Will Deacon
2014-11-26 10:09               ` Will Deacon
2014-12-22 10:10   ` Pratyush Anand
2014-12-22 10:10     ` Pratyush Anand
2014-11-18  6:32 ` [PATCH v3 2/5] arm64: Kprobes instruction simulation support David Long
2014-11-18  6:32   ` David Long
2014-11-18 14:43   ` William Cohen
2014-11-18 14:43     ` William Cohen
2014-11-18  6:32 ` [PATCH v3 3/5] arm64: Add kernel return probes support(kretprobes) David Long
2014-11-18  6:32   ` David Long
2014-11-18 14:50   ` William Cohen
2014-11-18 14:50     ` William Cohen
2014-11-18  6:32 ` [PATCH v3 4/5] kprobes: Add arm64 case in kprobe example module David Long
2014-11-18  6:32   ` David Long
2014-11-18  6:32 ` [PATCH v3 5/5] arm64: Add HAVE_REGS_AND_STACK_ACCESS_API feature David Long
2014-11-18  6:32   ` David Long
2014-11-18 14:52   ` Will Deacon
2014-11-18 14:52     ` Will Deacon
2014-11-20  7:20     ` Masami Hiramatsu
2014-11-20  7:20       ` Masami Hiramatsu
2014-11-21  6:16     ` David Long
2014-11-21  6:16       ` David Long
2014-11-20 15:02 ` [PATCH v3 0/5] ARM64: Add kernel probes(Kprobes) support Steve Capper
2014-11-20 15:02   ` Steve Capper
2014-11-26  8:33   ` Masami Hiramatsu
2014-11-26  8:33     ` Masami Hiramatsu
2014-11-26 10:03     ` Steve Capper
2014-11-26 10:03       ` Steve Capper
2014-11-26 17:46       ` David Long
2014-11-26 17:46         ` David Long
2014-11-26 18:59         ` Steve Capper
2014-11-26 18:59           ` Steve Capper
2014-11-27  6:07           ` Masami Hiramatsu
2014-11-27  6:07             ` Masami Hiramatsu
2014-11-28 16:01             ` Steve Capper
2014-11-28 16:01               ` Steve Capper
2014-12-01  9:37               ` Masami Hiramatsu
2014-12-01  9:37                 ` Re: " Masami Hiramatsu
2014-12-02 19:27                 ` William Cohen
2014-12-02 19:27                   ` William Cohen
2014-12-02 20:00                   ` William Cohen
2014-12-02 20:00                     ` William Cohen
2014-12-03  3:36                   ` Masami Hiramatsu
2014-12-03  3:36                     ` Masami Hiramatsu
2014-12-03 14:54                 ` William Cohen
2014-12-03 14:54                   ` William Cohen
2014-12-03 22:54                   ` David Long
2014-12-03 22:54                     ` David Long
2014-12-04  0:02                     ` David Long
2014-12-04  0:02                       ` David Long
2014-12-04  1:16                     ` William Cohen
2014-12-04  1:16                       ` William Cohen
2014-12-04  2:48                       ` David Long
2014-12-04  2:48                         ` David Long
2014-12-04 10:21                         ` Steve Capper
2014-12-04 10:21                           ` Steve Capper
2014-12-04 10:43                           ` Masami Hiramatsu
2014-12-04 10:43                             ` Masami Hiramatsu
2014-12-04 11:29                             ` Steve Capper
2014-12-04 11:29                               ` Steve Capper
2014-12-04 11:53                               ` Masami Hiramatsu
2014-12-04 11:53                                 ` Masami Hiramatsu
2014-12-09 13:33                                 ` Steve Capper
2014-12-09 13:33                                   ` Steve Capper
2014-12-09 14:27                                   ` David Long
2014-12-09 14:27                                     ` David Long
2014-12-10 16:38                                     ` Steve Capper
2014-12-10 16:38                                       ` Steve Capper
2014-12-12 22:42                                       ` David Long
2014-12-12 22:42                                         ` David Long
2014-12-12 23:10                                         ` Steve Capper
2014-12-12 23:10                                           ` Steve Capper
2014-12-15  5:58                                           ` Masami Hiramatsu
2014-12-15  5:58                                             ` Masami Hiramatsu
2014-12-15  6:29                                           ` David Long
2014-12-15  6:29                                             ` David Long
2014-12-05  5:08                       ` William Cohen
2014-12-05  5:08                         ` William Cohen
2014-11-27  5:13       ` Masami Hiramatsu
2014-11-27  5:13         ` Masami Hiramatsu

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=546EBF70.9020706@linaro.org \
    --to=dave.long@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.