[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <174580488057.388420.1338751162448700082.stgit@devnote2>
Date: Mon, 28 Apr 2025 10:48:00 +0900
From: "Masami Hiramatsu (Google)" <mhiramat@...nel.org>
To: Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>
Cc: Thomas Gleixner <tglx@...utronix.de>,
Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>,
x86@...nel.org,
"H . Peter Anvin" <hpa@...or.com>,
linux-kernel@...r.kernel.org,
Adrian Hunter <adrian.hunter@...el.com>
Subject: [PATCH 0/2] x86: Fix insn decoder to support 0xEA as UD
Hi,
Peter found that the current x86 instruction decoder reports the 0xEA
instruction as "JMP Ap" always. But objdump says that is invalid on
64bit mode. Thus there is a difference of lenght of 0xEA between
objdump and x86 insn decoder.
I found the opcodes which have (i64) superscript are invalid in 64bit
mode, if it is not paired with (o64). Thus this stops decoding such
instructions if insn->x86_64 is set.
With this fix, the single "0xEA" is correctly decoded as 1 byte
instruction in 64bit mode.
------
printf "0:\tea\t\n" | insn_decoder_test -y -v
insn_decoder_test: success: Decoded and checked 1 instructions
------
In this series, I also found a bug in previous (!REX2) tag. The first
commit fixes that.
---
Masami Hiramatsu (Google) (2):
x86: Fix opcode map (!REX2) superscript tags
x86: Stop decoding i64 instructions in x86-64 mode at opcode
arch/x86/include/asm/inat.h | 6 +++
arch/x86/lib/insn.c | 7 +++-
arch/x86/lib/x86-opcode-map.txt | 56 ++++++++++++++--------------
arch/x86/tools/gen-insn-attr-x86.awk | 7 ++++
tools/arch/x86/include/asm/inat.h | 6 +++
tools/arch/x86/lib/insn.c | 7 +++-
tools/arch/x86/lib/x86-opcode-map.txt | 56 ++++++++++++++--------------
tools/arch/x86/tools/gen-insn-attr-x86.awk | 7 ++++
8 files changed, 94 insertions(+), 58 deletions(-)
--
Masami Hiramatsu (Google) <mhiramat@...nel.org>
Powered by blists - more mailing lists