All of lore.kernel.org
 help / color / mirror / Atom feed
From: Kees Cook <kees@kernel.org>
To: Uros Bizjak <ubizjak@gmail.com>
Cc: Andrea Pinski <andrew.pinski@oss.qualcomm.com>,
	Jeffrey Law <jefflaw@qti.qualcomm.com>,
	Joseph Myers <josmyers@redhat.com>,
	Richard Biener <rguenther@suse.de>,
	Jakub Jelinek <jakub@redhat.com>,
	Martin Uecker <uecker@tugraz.at>,
	Peter Zijlstra <peterz@infradead.org>,
	Ard Biesheuvel <ardb@kernel.org>, Jan Hubicka <hubicka@ucw.cz>,
	Richard Earnshaw <richard.earnshaw@arm.com>,
	Richard Sandiford <richard.sandiford@arm.com>,
	Marcus Shawcroft <marcus.shawcroft@arm.com>,
	Kyrylo Tkachov <kyrylo.tkachov@arm.com>,
	Kito Cheng <kito.cheng@gmail.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Andrew Waterman <andrew@sifive.com>,
	Jim Wilson <jim.wilson.gcc@gmail.com>,
	Dan Li <ashimida.1990@gmail.com>,
	Sami Tolvanen <samitolvanen@google.com>,
	Ramon de C Valle <rcvalle@google.com>,
	Joao Moreira <joao@overdrivepizza.com>,
	Nathan Chancellor <nathan@kernel.org>,
	Bill Wendling <morbo@google.com>,
	Osterlund Sebastian <sebastian.osterlund@intel.com>,
	Constable Scott D <scott.d.constable@intel.com>,
	gcc-patches@gcc.gnu.org, linux-hardening@vger.kernel.org
Subject: Re: [PATCH v15 4/7] x86: Add x86_64 Kernel Control Flow Integrity implementation
Date: Wed, 26 Aug 2026 22:03:45 -0700	[thread overview]
Message-ID: <202608262159.ED2BB32C4B@keescook> (raw)
In-Reply-To: <CAFULd4ZKxXdw0gk5RHfihOBHJmcs15Y-uLFHcQUp_JMg58RyrA@mail.gmail.com>

On Wed, Aug 26, 2026 at 10:57:44AM +0200, Uros Bizjak wrote:
> On Wed, Aug 26, 2026 at 1:59 AM Kees Cook <kees@kernel.org> wrote:
[...]
> > +/* Apply x86-64 specific masking to KCFI type ID.  TYPE_ID is the 32-bit
> > +   KCFI type identifier to potentially mask.  Returns the type ID with
> > +   x86-64 specific adjustments to avoid embedding ENDBR instruction
> > +   sequences in the type identifier values.  */
> > +
> > +static uint32_t
> > +ix86_kcfi_mask_type_id (uint32_t type_id)
> > +{
> > +  /* Avoid embedding ENDBR instructions in KCFI type IDs.
> > +     ENDBR64: 0xfa1e0ff3, ENDBR32: 0xfb1e0ff3
> > +     If the type ID matches either instruction encoding, increment by 1.  */
> > +  if (type_id == 0xfa1e0ff3U || type_id == 0xfb1e0ff3U)
> 
> This should use the ix86_endbr_immediate_operand predicate. Exactly
> one target dependent immediate (0xfa1... for TARGET_64BIT and 0xfb1
> for TARGET_32BIT) should be avoided only with flag_cf_protection &
> CF_BRANCH. All this is handled in the predicate.

Ah yeah. Hmm, I double checked, and Clang doesn't gate this on
-fcf-protection nor arch, which means we have a potential ABI mismatch if
I change that logic in GCC's version of this.

If this is really important, I could look at making Clang check for the
flag/arch too, though honestly, I haven't even been able to generate a
collision with these values either, so the whole thing is theoretical...

I could improve the comment to note the ABI perhaps?

-- 
Kees Cook

  reply	other threads:[~2026-08-27  5:03 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-25 23:57 [PATCH v15 0/7] Introduce Kernel Control Flow Integrity ABI [PR107048] Kees Cook
2026-08-25 23:57 ` [PATCH v15 1/7] kcfi: Introduce KCFI typeinfo mangling API Kees Cook
2026-09-23  9:25   ` Juergen Christ
2026-09-24  3:55     ` Kees Cook
2026-09-24  7:55       ` Juergen Christ
2026-10-05 10:24         ` Kees Cook
2026-09-24  3:57     ` Andrea Pinski
2026-09-24  8:27       ` Jakub Jelinek
2026-08-25 23:57 ` [PATCH v15 2/7] kcfi: Add core Kernel Control Flow Integrity infrastructure Kees Cook
2026-08-25 23:57 ` [PATCH v15 3/7] kcfi: Add regression test suite Kees Cook
2026-08-25 23:57 ` [PATCH v15 4/7] x86: Add x86_64 Kernel Control Flow Integrity implementation Kees Cook
2026-08-26  8:57   ` Uros Bizjak
2026-08-27  5:03     ` Kees Cook [this message]
2026-08-27  8:03       ` Uros Bizjak
2026-08-25 23:57 ` [PATCH v15 5/7] aarch64: Add AArch64 " Kees Cook
2026-08-25 23:57 ` [PATCH v15 6/7] arm: Add ARM 32-bit " Kees Cook
2026-08-25 23:57 ` [PATCH v15 7/7] riscv: Add RISC-V " Kees Cook

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=202608262159.ED2BB32C4B@keescook \
    --to=kees@kernel.org \
    --cc=andrew.pinski@oss.qualcomm.com \
    --cc=andrew@sifive.com \
    --cc=ardb@kernel.org \
    --cc=ashimida.1990@gmail.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hubicka@ucw.cz \
    --cc=jakub@redhat.com \
    --cc=jefflaw@qti.qualcomm.com \
    --cc=jim.wilson.gcc@gmail.com \
    --cc=joao@overdrivepizza.com \
    --cc=josmyers@redhat.com \
    --cc=kito.cheng@gmail.com \
    --cc=kyrylo.tkachov@arm.com \
    --cc=linux-hardening@vger.kernel.org \
    --cc=marcus.shawcroft@arm.com \
    --cc=morbo@google.com \
    --cc=nathan@kernel.org \
    --cc=palmer@dabbelt.com \
    --cc=peterz@infradead.org \
    --cc=rcvalle@google.com \
    --cc=rguenther@suse.de \
    --cc=richard.earnshaw@arm.com \
    --cc=richard.sandiford@arm.com \
    --cc=samitolvanen@google.com \
    --cc=scott.d.constable@intel.com \
    --cc=sebastian.osterlund@intel.com \
    --cc=ubizjak@gmail.com \
    --cc=uecker@tugraz.at \
    /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.