OSDN Git Service

uprobes/x86: Fix 1-byte opcode tables
authorDenys Vlasenko <dvlasenk@redhat.com>
Thu, 12 Feb 2015 19:18:51 +0000 (20:18 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 18 Feb 2015 19:55:51 +0000 (20:55 +0100)
commit67fc809217dc7fd793211585b2a8d7b61715d06b
tree707a5ec5175e2e8c83cd04633b2323a7b9ad089d
parent097f4e5e839359021c8f0ea273655031e6ed04ff
uprobes/x86: Fix 1-byte opcode tables

This change fixes 1-byte opcode tables so that only insns
for which we have real reasons to disallow probing are marked
with unset bits.

To that end:

Set bits for all prefix bytes. Their setting is ignored anyway -
we check the bitmap against OPCODE1(insn), not against first
byte. Keeping them set to 0 only confuses code reader with
"why we don't support that opcode" question.

Thus: enable bytes c4,c5 in 64-bit mode (VEX prefixes).
Byte 62 (EVEX prefix) is not yet enabled since insn decoder
does not support that yet.

For 32-bit mode, enable probing of opcodes 63 (arpl) and d6
(salc). They don't require any special handling.

For 64-bit mode, disable 9a and ea - these undefined opcodes
were mistakenly left enabled.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/1423768732-32194-2-git-send-email-dvlasenk@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/uprobes.c