From: Masami Hiramatsu <mhiramat@kernel.org>
To: Borislav Petkov <bp@alien8.de>
Cc: x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@kernel.org>, Kees Cook <keescook@chromium.org>,
"H . Peter Anvin" <hpa@zytor.com>, Joerg Roedel <jroedel@suse.de>,
Tom Lendacky <thomas.lendacky@amd.com>,
"Gustavo A . R . Silva" <gustavoars@kernel.org>,
Jann Horn <jannh@google.com>,
Srikar Dronamraju <srikar@linux.vnet.ibm.com>,
Ricardo Neri <ricardo.neri-calderon@linux.intel.com>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v3 1/3] x86/uprobes: Fix not using prefixes.nbytes for loop over prefixes.bytes
Date: Sat, 5 Dec 2020 09:10:32 +0900 [thread overview]
Message-ID: <20201205091032.6956a5bad9330ec7b9b84dc5@kernel.org> (raw)
In-Reply-To: <20201204150522.GG31534@zn.tnic>
On Fri, 4 Dec 2020 16:05:22 +0100
Borislav Petkov <bp@alien8.de> wrote:
> On Fri, Dec 04, 2020 at 07:55:20PM +0900, Masami Hiramatsu wrote:
> > +/**
> > + * for_each_insn_prefix() -- Iterate prefixes in the instruction
> > + * @insn: Pointer to struct insn.
> > + * @idx: Index storage.
> > + * @prefix: Prefix byte.
> > + *
> > + * Iterate prefix bytes of given @insn. Each prefix byte is stored in @prefix
> > + * and the index is stored in @idx (note that this @idx is just for a cursor,
> > + * do not change it.)
> > + * Since prefixes.nbytes can be bigger than NUM_INSN_FIELD_BYTES when some
> > + * prefixes are repeated, it can not be used for looping over the prefixes.
> > + */
> > +#define for_each_insn_prefix(insn, idx, prefix) \
> > + for (idx = 0; \
> > + idx < MAX_LEGACY_PREFIX_GROUPS && \
>
> The problem I see here is that you check for the index limit to be
> < MAX_LEGACY_PREFIX_GROUPS but the array itself is defined using
> NUM_INSN_FIELD_BYTES, and that is confusing.
Yeah, I considered that once. If I know the number of legacy prefix
groups never exceed the size of prefixes.bytes, then we would better
use the max number of legacy prefix here (because we are looping on
the bytes from the prefix groups).
That is why I added #error check in this patch.
> I guess this should be:
>
> #define MAX_LEGACY_PREFIX_GROUPS 4
> #define NUM_INSN_FIELD_BYTES MAX_LEGACY_PREFIX_GROUPS
>
> and later, iff the legacy prefixes array size needs separating from the
> insn field array size, then the defines would need to change too.
No, those have different meaning. NUM_INSN_FIELD_BYTES means
sizeof(s32) / sizeof(u8), which comes from the definition of
insn_field data structure. But MAX_LEGACY_PREFIX_GROUPS comes
from the x86 ISA.
In the future, if x86 ISA is expanded and add a legacy prefix
groups, then we have to add new insn_prefix_field data structure,
which size will not depend on NUM_INSN_FIELD_BYTES, but still
depend on MAX_LEGACY_PREFIX_GROUPS (and that will be 5).
Thank you,
--
Masami Hiramatsu <mhiramat@kernel.org>
next prev parent reply other threads:[~2020-12-05 0:11 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-04 10:55 [PATCH v3 0/3] x86/insn: Fix not using prefixes.nbytes for loop over prefixes.bytes Masami Hiramatsu
2020-12-04 10:55 ` [PATCH v3 1/3] x86/uprobes: " Masami Hiramatsu
2020-12-04 15:05 ` Borislav Petkov
2020-12-05 0:10 ` Masami Hiramatsu [this message]
2020-12-05 10:14 ` Borislav Petkov
2020-12-04 10:55 ` [PATCH v3 2/3] x86/insn-eval: " Masami Hiramatsu
2020-12-04 10:55 ` [PATCH v3 3/3] x86/sev-es: " Masami Hiramatsu
2020-12-04 15:02 ` [PATCH v3 0/3] x86/insn: " Borislav Petkov
2020-12-05 0:22 ` Masami Hiramatsu
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=20201205091032.6956a5bad9330ec7b9b84dc5@kernel.org \
--to=mhiramat@kernel.org \
--cc=bp@alien8.de \
--cc=gustavoars@kernel.org \
--cc=hpa@zytor.com \
--cc=jannh@google.com \
--cc=jroedel@suse.de \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=ricardo.neri-calderon@linux.intel.com \
--cc=srikar@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--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