All of lore.kernel.org
 help / color / mirror / Atom feed
From: ben.dooks@codethink.co.uk (Ben Dooks)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 2/9] ARM: kprobes: fix instruction fetch order with <asm/opcodes.h>
Date: Fri, 29 Nov 2013 17:55:16 +0000	[thread overview]
Message-ID: <5298D504.5090304@codethink.co.uk> (raw)
In-Reply-To: <CAArO44sQAiz4nHd8LW6kpRg-jPgfr8dbiXfKi+sdjf8zRnE46g@mail.gmail.com>

On 29/11/13 13:01, Taras Kondratiuk wrote:
> On 8 November 2013 20:37, Ben Dooks <ben.dooks@codethink.co.uk> wrote:
>> If we are running BE8, the data and instruction endian-ness do not
>> match, so use <asm/opcodes.h> to correctly translate memory accesses
>> into ARM instructions.
>>
>> Signed-off-by: Ben Dooks <ben.dooks@codethink.co.uk>y
>> ---
>>   arch/arm/kernel/kprobes-common.c | 14 ++++++++------
>>   arch/arm/kernel/kprobes.c        |  9 +++++----
>>   2 files changed, 13 insertions(+), 10 deletions(-)
>>
>> diff --git a/arch/arm/kernel/kprobes-common.c b/arch/arm/kernel/kprobes-common.c
>> index 18a7628..4954e0f 100644
>> --- a/arch/arm/kernel/kprobes-common.c
>> +++ b/arch/arm/kernel/kprobes-common.c
>> @@ -14,6 +14,7 @@
>>   #include <linux/kernel.h>
>>   #include <linux/kprobes.h>
>>   #include <asm/system_info.h>
>> +#include <asm/opcodes.h>
>>
>>   #include "kprobes.h"
>>
>> @@ -305,7 +306,8 @@ kprobe_decode_ldmstm(kprobe_opcode_t insn, struct arch_specific_insn *asi)
>>
>>          if (handler) {
>>                  /* We can emulate the instruction in (possibly) modified form */
>> -               asi->insn[0] = (insn & 0xfff00000) | (rn << 16) | reglist;
>> +               asi->insn[0] = __opcode_to_mem_arm((insn & 0xfff00000) |
>> +                                                  (rn << 16) | reglist);
>>                  asi->insn_handler = handler;
>>                  return INSN_GOOD;
>>          }
>> @@ -338,9 +340,9 @@ prepare_emulated_insn(kprobe_opcode_t insn, struct arch_specific_insn *asi,
>>                  thumb_insn[2] = 0x4770; /* Thumb bx lr */
>
> should be
> thumb_insn[1] = __opcode_to_mem_thumb16(0x4770);
> thumb_insn[2] = __opcode_to_mem_thumb16(0x4770);
>
>>                  return insn;
>>          }
>> -       asi->insn[1] = 0xe12fff1e; /* ARM bx lr */
>> +       asi->insn[1] = __opcode_to_mem_arm(0xe12fff1e); /* ARM bx lr */
>>   #else
>> -       asi->insn[1] = 0xe1a0f00e; /* mov pc, lr */
>> +       asi->insn[1] = __opcode_to_mem_arm(0xe1a0f00e); /* mov pc, lr */
>>   #endif
>>          /* Make an ARM instruction unconditional */
>>          if (insn < 0xe0000000)
>

Thanks, will re-do these patches.

-- 
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius

  reply	other threads:[~2013-11-29 17:55 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-08 18:37 [RFC] kprobes/kprobes-test fixes, .inst updates Ben Dooks
2013-11-08 18:37 ` [PATCH 1/9] ARM: fix missed big-endian fix in traps.c Ben Dooks
2013-11-08 18:37 ` [PATCH 2/9] ARM: kprobes: fix instruction fetch order with <asm/opcodes.h> Ben Dooks
2013-11-29 13:01   ` Taras Kondratiuk
2013-11-29 17:55     ` Ben Dooks [this message]
2013-11-08 18:37 ` [PATCH 3/9] ARM: kprobes-test: use <asm/opcodes.h> for instruction accesses Ben Dooks
2013-11-08 18:37 ` [PATCH 4/9] ARM: kprobes-test: Use <asm/opcodes.h> for ARM instruction building Ben Dooks
2013-11-29 11:55   ` Taras Kondratiuk
2013-11-08 18:37 ` [PATCH 5/9] ARM: kprobes-test: Use <asm/opcodes.h> for thumb instruction nuilding Ben Dooks
2013-11-08 18:37 ` [PATCH 6/9] ARM: kprobes-test: Workaround GAS .align bug Ben Dooks
2013-11-08 18:37 ` [PATCH 7/9] ARM: kprobes-test: fix next_instruction() Ben Dooks
2013-11-08 18:37 ` [PATCH 8/9] ARM: add test for as supporting '.inst' Ben Dooks
2013-11-11 18:16   ` Dave Martin
2013-11-08 18:37 ` [PATCH 9/9] ARM: asm/opcodes.h: use ARM_HAVE_INST to use .inst to build instructions Ben Dooks
2013-11-11 16:18   ` Dave Martin
2013-11-11 18:40     ` Dave Martin
2013-11-29 17:57   ` Taras Kondratiuk
2013-11-29 18:00 ` [RFC] kprobes/kprobes-test fixes, .inst updates Taras Kondratiuk

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=5298D504.5090304@codethink.co.uk \
    --to=ben.dooks@codethink.co.uk \
    --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.