All of lore.kernel.org
 help / color / mirror / Atom feed
From: Li Huafei <lihuafei1@huawei.com>
To: <stable@vger.kernel.org>
Cc: <gregkh@linuxfoundation.org>, <mhiramat@kernel.org>,
	<tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>,
	<x86@kernel.org>, <hpa@zytor.com>, <sashal@kernel.org>,
	<peterz@infradead.org>, <linux-kernel@vger.kernel.org>,
	<xukuohai@huawei.com>, <natechancellor@gmail.com>,
	<ndesaulniers@google.com>, <rostedt@goodmis.org>,
	<weiyongjun1@huawei.com>, <gustavoars@kernel.org>,
	<namit@vmware.com>, <laijs@linux.alibaba.com>,
	<clang-built-linux@googlegroups.com>, <lihuafei1@huawei.com>
Subject: [PATCH 5.10 3/9] x86/kprobes: Retrieve correct opcode for group instruction
Date: Wed, 5 Jul 2023 14:46:47 +0800	[thread overview]
Message-ID: <20230705064653.226811-4-lihuafei1@huawei.com> (raw)
In-Reply-To: <20230705064653.226811-1-lihuafei1@huawei.com>

From: Masami Hiramatsu <mhiramat@kernel.org>

[ Upstream commit d60ad3d46f1d04a282c56159f1deb675c12733fd ]

Since the opcodes start from 0xff are group5 instruction group which is
not 2 bytes opcode but the extended opcode determined by the MOD/RM byte.

The commit abd82e533d88 ("x86/kprobes: Do not decode opcode in resume_execution()")
used insn->opcode.bytes[1], but that is not correct. We have to refer
the insn->modrm.bytes[1] instead.

Fixes: abd82e533d88 ("x86/kprobes: Do not decode opcode in resume_execution()")
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/161469872400.49483.18214724458034233166.stgit@devnote2
Signed-off-by: Li Huafei <lihuafei1@huawei.com>
---
 arch/x86/kernel/kprobes/core.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index 19ca5164be4d..40d5c603ce8e 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -464,7 +464,11 @@ static void set_resume_flags(struct kprobe *p, struct insn *insn)
 		break;
 #endif
 	case 0xff:
-		opcode = insn->opcode.bytes[1];
+		/*
+		 * Since the 0xff is an extended group opcode, the instruction
+		 * is determined by the MOD/RM byte.
+		 */
+		opcode = insn->modrm.bytes[0];
 		if ((opcode & 0x30) == 0x10) {
 			/*
 			 * call absolute, indirect
-- 
2.17.1


  parent reply	other threads:[~2023-07-05  6:48 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-05  6:46 [PATCH 5.10 0/9] x86/kprobes: Fix kprobe debug exception handling logic Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 1/9] kprobes/x86: Fix fall-through warnings for Clang Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 2/9] x86/kprobes: Do not decode opcode in resume_execution() Li Huafei
2023-07-05  6:46 ` Li Huafei [this message]
2023-07-05  6:46 ` [PATCH 5.10 4/9] x86/kprobes: Identify far indirect JMP correctly Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 5/9] x86/kprobes: Use int3 instead of debug trap for single-step Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 6/9] x86/kprobes: Fix to identify indirect jmp and others using range case Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 7/9] x86/kprobes: Move 'inline' to the beginning of the kprobe_is_ss() declaration Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 8/9] x86/kprobes: Update kcb status flag after singlestepping Li Huafei
2023-07-05  6:46 ` [PATCH 5.10 9/9] x86/kprobes: Fix JNG/JNLE emulation Li Huafei
2023-08-04  9:57 ` [PATCH 5.10 0/9] x86/kprobes: Fix kprobe debug exception handling logic Greg KH

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=20230705064653.226811-4-lihuafei1@huawei.com \
    --to=lihuafei1@huawei.com \
    --cc=bp@alien8.de \
    --cc=clang-built-linux@googlegroups.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=gustavoars@kernel.org \
    --cc=hpa@zytor.com \
    --cc=laijs@linux.alibaba.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mhiramat@kernel.org \
    --cc=mingo@redhat.com \
    --cc=namit@vmware.com \
    --cc=natechancellor@gmail.com \
    --cc=ndesaulniers@google.com \
    --cc=peterz@infradead.org \
    --cc=rostedt@goodmis.org \
    --cc=sashal@kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    --cc=weiyongjun1@huawei.com \
    --cc=x86@kernel.org \
    --cc=xukuohai@huawei.com \
    /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.