From: Nadav Amit <namit@vmware.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
X86 ML <x86@kernel.org>,
kernel list <linux-kernel@vger.kernel.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH] x86/kprobes: Fix 1 byte conditional jump target
Date: Mon, 6 Feb 2023 19:05:02 +0000 [thread overview]
Message-ID: <C4863EDA-106B-4AF9-8D39-D603EEE4BEDC@vmware.com> (raw)
In-Reply-To: <a75c134d-8278-b17c-e05e-409b70ad15b0@intel.com>
> On Feb 6, 2023, at 8:42 PM, Dave Hansen <dave.hansen@intel.com> wrote:
>
> !! External Email
>
> On 2/4/23 13:08, Nadav Amit wrote:
>> --- a/arch/x86/kernel/kprobes/core.c
>> +++ b/arch/x86/kernel/kprobes/core.c
>> @@ -625,7 +625,7 @@ static int prepare_emulation(struct kprobe *p, struct insn *insn)
>> /* 1 byte conditional jump */
>> p->ainsn.emulate_op = kprobe_emulate_jcc;
>> p->ainsn.jcc.type = opcode & 0xf;
>> - p->ainsn.rel32 = *(char *)insn->immediate.bytes;
>> + p->ainsn.rel32 = *(s8 *)&insn->immediate.value;
>> break;
>
> This new code is at least consistent with what the other code in that
> function does with 1-byte immediates. But, I'm curious what the point
> is about going through the 's8' type.
>
> What's wrong with:
>
> p->ainsn.rel32 = insn->immediate.value;
>
> ? Am I missing something subtle?
I am not sure why this is considered safe, insn->immediate.value has a
type of insn_value_t, which is signed int, so such casting seems wrong
to me. Do you imply that during decoding the sign-extension should have
been done correctly? Or am I missing something else?
Anyhow, after spending too much time on debugging kprobes failures,
I prefer to be more defensive, and not require the code to be “aware”
or rely on member types or the order of implicit casting in C.
next prev parent reply other threads:[~2023-02-06 19:05 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-04 21:08 Nadav Amit
2023-02-05 7:49 ` Nadav Amit
2023-02-06 14:19 ` Masami Hiramatsu
2023-02-06 14:18 ` Masami Hiramatsu
2023-02-06 18:42 ` Dave Hansen
2023-02-06 19:05 ` Nadav Amit [this message]
2023-02-06 22:38 ` Dave Hansen
2023-02-07 0:54 ` Masami Hiramatsu
2023-02-07 15:21 ` Masami Hiramatsu
2023-02-07 15:33 ` Dave Hansen
2023-02-08 6:34 ` Nadav Amit
2023-02-08 6:56 ` Dave Hansen
2023-02-08 6:58 ` Nadav Amit
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=C4863EDA-106B-4AF9-8D39-D603EEE4BEDC@vmware.com \
--to=namit@vmware.com \
--cc=bp@alien8.de \
--cc=dave.hansen@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®