[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <aB3NWUrtWMXOppYE@google.com>
Date: Fri, 9 May 2025 09:39:37 +0000
From: Alice Ryhl <aliceryhl@...gle.com>
To: "Paweł Anikiel" <panikiel@...gle.com>
Cc: Miguel Ojeda <miguel.ojeda.sandonis@...il.com>, Peter Zijlstra <peterz@...radead.org>,
Kees Cook <kees@...nel.org>, Sami Tolvanen <samitolvanen@...gle.com>,
Alex Gaynor <alex.gaynor@...il.com>, Borislav Petkov <bp@...en8.de>,
Dave Hansen <dave.hansen@...ux.intel.com>, Ingo Molnar <mingo@...hat.com>,
Josh Poimboeuf <jpoimboe@...nel.org>, Masahiro Yamada <masahiroy@...nel.org>,
Miguel Ojeda <ojeda@...nel.org>, Thomas Gleixner <tglx@...utronix.de>,
Nathan Chancellor <nathan@...nel.org>, x86@...nel.org, linux-kernel@...r.kernel.org,
rust-for-linux@...r.kernel.org, Matthew Maurer <mmaurer@...gle.com>,
Ramon de C Valle <rcvalle@...gle.com>
Subject: Re: [PATCH] x86/Kconfig: make CFI_AUTO_DEFAULT depend on !RUST
On Fri, May 09, 2025 at 11:11:48AM +0200, Paweł Anikiel wrote:
> On Fri, May 9, 2025 at 11:04 AM Miguel Ojeda
> <miguel.ojeda.sandonis@...il.com> wrote:
> >
> > On Fri, May 9, 2025 at 10:46 AM Alice Ryhl <aliceryhl@...gle.com> wrote:
> > >
> > > Actually ... I don't think putting it on CFI_AUTO_DEFAULT the right
> > > approach.
> > >
> > > Shouldn't the depends on clause go on `config FINEIBT` instead? After
> > > all, the current patch just means that you can't make FineIBT the
> > > default option. But you can still pass kcfi=fineibt on boot to enble
> > > FineIBT which would result in the same crash.
> >
> > I thought the intention was to avoid disabling FineIBT at config time:
> > https://lore.kernel.org/all/202504161442.66CE2596@keescook/
>
> I think you mean enabling FineIBT - yes, this patch does exactly that,
> it's still possible to enable it by hand with cfi=
>
> > If another approach is needed, then we can change it on top if that is
> > OK (I am about to submit the PR).
>
> Putting it on CONFIG_FINEIBT was my initial idea, but it turns out
> that this creates a dependency cycle in Kconfig:
>
> error: recursive dependency detected!
> symbol RUST depends on CALL_PADDING
> symbol CALL_PADDING is selected by FINEIBT
> symbol FINEIBT depends on RUST
>
> Not sure if it's possible to make it work.
To fix that, we probably have to do one of:
Option 1: Upgrade the rustc MSRV past 1.81 and drop the depends on
CALL_PADDING.
Option 2: Split `config FINEIBT` into two options:
config HAVE_FINEIBT
def_bool y
depends on X86_KERNEL_IBT && CFI_CLANG && MITIGATION_RETPOLINE
depends on !RUST || RUSTC_VERSION >= 108800
config FINEIBT
bool "Accept cfi=fineibt option at boot"
depends on HAVE_FINEIBT
select CALL_PADDING
Alice
Powered by blists - more mailing lists