From: dave.martin@linaro.org (Dave Martin)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 9/9] ARM: add uprobes support
Date: Mon, 15 Oct 2012 18:31:47 +0100 [thread overview]
Message-ID: <20121015173147.GA18614@linaro.org> (raw)
In-Reply-To: <1350242593-17761-9-git-send-email-rabin@rab.in>
On Sun, Oct 14, 2012 at 09:23:13PM +0200, Rabin Vincent wrote:
> Add basic uprobes support for ARM.
>
> perf probe --exec and SystemTap's userspace probing work. The ARM
> kprobes test code has also been run in a userspace harness to test the
> uprobe instruction decoding.
>
> Caveats:
>
> - Thumb is not supported
> - XOL abort/trap handling is not implemented
[...]
> diff --git a/arch/arm/kernel/uprobes.c b/arch/arm/kernel/uprobes.c
> new file mode 100644
> index 0000000..f25a4af
> --- /dev/null
> +++ b/arch/arm/kernel/uprobes.c
[...]
> +bool is_swbp_insn(uprobe_opcode_t *insn)
> +{
> + return (__mem_to_opcode_arm(*insn) & 0x0fffffff) == UPROBE_SWBP_INSN;
You should take care not to match any instruction whose top bits are
0xF0000000. That could be some completely different instruction.
[...]
> +static int uprobe_trap_handler(struct pt_regs *regs, unsigned int instr)
> +{
> + unsigned long flags;
> +
> + local_irq_save(flags);
> + if ((instr & 0x0fffffff) == UPROBE_SWBP_INSN)
Is the check unnecessary here? I think the same comparison will
happen as a result of evaluating the associated undef_hook.
However, as above you must still check for and reject cases where
(instr & 0xF0000000) == 0xF0000000.
[...]
> +static struct undef_hook uprobes_arm_break_hook = {
> + .instr_mask = 0x0fffffff,
> + .instr_val = UPROBE_SWBP_INSN,
> + .cpsr_mask = MODE_MASK,
> + .cpsr_val = USR_MODE,
> + .fn = uprobe_trap_handler,
> +};
> +
> +static struct undef_hook uprobes_arm_ss_hook = {
> + .instr_mask = 0x0fffffff,
> + .instr_val = UPROBE_SS_INSN,
> + .cpsr_mask = MODE_MASK,
> + .cpsr_val = USR_MODE,
> + .fn = uprobe_trap_handler,
> +};
WARNING: multiple messages have this Message-ID (diff)
From: Dave Martin <dave.martin@linaro.org>
To: Rabin Vincent <rabin@rab.in>
Cc: linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Peter Zijlstra <peterz@infradead.org>,
Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
oleg@redhat.com
Subject: Re: [PATCH 9/9] ARM: add uprobes support
Date: Mon, 15 Oct 2012 18:31:47 +0100 [thread overview]
Message-ID: <20121015173147.GA18614@linaro.org> (raw)
In-Reply-To: <1350242593-17761-9-git-send-email-rabin@rab.in>
On Sun, Oct 14, 2012 at 09:23:13PM +0200, Rabin Vincent wrote:
> Add basic uprobes support for ARM.
>
> perf probe --exec and SystemTap's userspace probing work. The ARM
> kprobes test code has also been run in a userspace harness to test the
> uprobe instruction decoding.
>
> Caveats:
>
> - Thumb is not supported
> - XOL abort/trap handling is not implemented
[...]
> diff --git a/arch/arm/kernel/uprobes.c b/arch/arm/kernel/uprobes.c
> new file mode 100644
> index 0000000..f25a4af
> --- /dev/null
> +++ b/arch/arm/kernel/uprobes.c
[...]
> +bool is_swbp_insn(uprobe_opcode_t *insn)
> +{
> + return (__mem_to_opcode_arm(*insn) & 0x0fffffff) == UPROBE_SWBP_INSN;
You should take care not to match any instruction whose top bits are
0xF0000000. That could be some completely different instruction.
[...]
> +static int uprobe_trap_handler(struct pt_regs *regs, unsigned int instr)
> +{
> + unsigned long flags;
> +
> + local_irq_save(flags);
> + if ((instr & 0x0fffffff) == UPROBE_SWBP_INSN)
Is the check unnecessary here? I think the same comparison will
happen as a result of evaluating the associated undef_hook.
However, as above you must still check for and reject cases where
(instr & 0xF0000000) == 0xF0000000.
[...]
> +static struct undef_hook uprobes_arm_break_hook = {
> + .instr_mask = 0x0fffffff,
> + .instr_val = UPROBE_SWBP_INSN,
> + .cpsr_mask = MODE_MASK,
> + .cpsr_val = USR_MODE,
> + .fn = uprobe_trap_handler,
> +};
> +
> +static struct undef_hook uprobes_arm_ss_hook = {
> + .instr_mask = 0x0fffffff,
> + .instr_val = UPROBE_SS_INSN,
> + .cpsr_mask = MODE_MASK,
> + .cpsr_val = USR_MODE,
> + .fn = uprobe_trap_handler,
> +};
next prev parent reply other threads:[~2012-10-15 17:31 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-14 19:23 [PATCH 1/9] uprobes: move function declarations out of arch Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-14 19:23 ` [PATCH 2/9] uprobes: check for single step support Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-17 16:40 ` Srikar Dronamraju
2012-10-17 16:40 ` Srikar Dronamraju
2012-10-17 17:02 ` Oleg Nesterov
2012-10-17 17:02 ` Oleg Nesterov
2012-10-14 19:23 ` [PATCH 3/9] uprobes: allow ignoring of probe hits Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-15 16:52 ` Oleg Nesterov
2012-10-15 16:52 ` Oleg Nesterov
2012-10-16 20:11 ` Rabin Vincent
2012-10-16 20:11 ` Rabin Vincent
2012-10-17 17:35 ` Oleg Nesterov
2012-10-17 17:35 ` Oleg Nesterov
2012-10-21 18:15 ` Rabin Vincent
2012-10-21 18:15 ` Rabin Vincent
2012-10-21 19:40 ` Oleg Nesterov
2012-10-21 19:40 ` Oleg Nesterov
2012-10-17 16:52 ` Srikar Dronamraju
2012-10-17 16:52 ` Srikar Dronamraju
2012-10-14 19:23 ` [PATCH 4/9] uprobes: allow arch access to xol slot Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-17 17:17 ` Srikar Dronamraju
2012-10-17 17:17 ` Srikar Dronamraju
2012-10-14 19:23 ` [PATCH 5/9] uprobes: allow arch-specific initialization Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-18 9:39 ` Srikar Dronamraju
2012-10-18 9:39 ` Srikar Dronamraju
2012-10-14 19:23 ` [PATCH 6/9] uprobes: flush cache after xol write Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-15 16:57 ` Oleg Nesterov
2012-10-15 16:57 ` Oleg Nesterov
2012-10-16 20:29 ` Rabin Vincent
2012-10-16 20:29 ` Rabin Vincent
2012-10-25 14:58 ` Oleg Nesterov
2012-10-25 14:58 ` Oleg Nesterov
2012-10-26 5:52 ` Ananth N Mavinakayanahalli
2012-10-26 5:52 ` Ananth N Mavinakayanahalli
2012-10-26 16:39 ` Oleg Nesterov
2012-10-26 16:39 ` Oleg Nesterov
2012-10-29 5:35 ` Ananth N Mavinakayanahalli
2012-10-29 5:35 ` Ananth N Mavinakayanahalli
2012-11-03 16:33 ` Oleg Nesterov
2012-11-03 16:33 ` Oleg Nesterov
2012-11-04 14:29 ` Ananth N Mavinakayanahalli
2012-11-04 14:29 ` Ananth N Mavinakayanahalli
2012-11-14 17:37 ` Oleg Nesterov
2012-11-14 17:37 ` Oleg Nesterov
2012-10-14 19:23 ` [PATCH 7/9] uprobes: add arch write opcode hook Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-14 19:23 ` [PATCH 8/9] ARM: support uprobe handling Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-11-04 10:13 ` Russell King - ARM Linux
2012-11-04 10:13 ` Russell King - ARM Linux
2012-11-12 17:26 ` Rabin Vincent
2012-11-12 17:26 ` Rabin Vincent
2012-10-14 19:23 ` [PATCH 9/9] ARM: add uprobes support Rabin Vincent
2012-10-14 19:23 ` Rabin Vincent
2012-10-15 11:14 ` Dave Martin
2012-10-15 11:14 ` Dave Martin
2012-10-15 11:44 ` Rabin Vincent
2012-10-15 11:44 ` Rabin Vincent
2012-10-15 17:44 ` Dave Martin
2012-10-15 17:44 ` Dave Martin
2012-10-17 14:50 ` Jon Medhurst (Tixy)
2012-10-17 14:50 ` Jon Medhurst (Tixy)
2012-10-21 18:43 ` Rabin Vincent
2012-10-21 18:43 ` Rabin Vincent
2012-10-21 18:59 ` Rabin Vincent
2012-10-21 18:59 ` Rabin Vincent
2012-10-15 17:31 ` Dave Martin [this message]
2012-10-15 17:31 ` Dave Martin
2012-10-21 18:27 ` Rabin Vincent
2012-10-21 18:27 ` Rabin Vincent
2012-10-17 17:54 ` Oleg Nesterov
2012-10-17 17:54 ` Oleg Nesterov
2012-10-15 17:19 ` [PATCH 1/9] uprobes: move function declarations out of arch Srikar Dronamraju
2012-10-15 17:19 ` Srikar Dronamraju
2012-10-16 20:30 ` Rabin Vincent
2012-10-16 20:30 ` Rabin Vincent
-- strict thread matches above, loose matches on Subject: below --
2013-08-01 23:45 [PATCH 0/9] uprobes: Add uprobes support for ARM David Long
2013-08-01 23:45 ` [PATCH 9/9] ARM: add uprobes support David Long
2013-08-01 23:45 ` David Long
2013-08-29 14:54 ` Jon Medhurst (Tixy)
2013-08-29 14:54 ` Jon Medhurst (Tixy)
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=20121015173147.GA18614@linaro.org \
--to=dave.martin@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.