From: Will Deacon <will@kernel.org>
To: Alice Ryhl <aliceryhl@google.com>
Cc: "Catalin Marinas" <catalin.marinas@arm.com>,
"Jamie Cunliffe" <Jamie.Cunliffe@arm.com>,
"Sami Tolvanen" <samitolvanen@google.com>,
"Nathan Chancellor" <nathan@kernel.org>,
"Conor Dooley" <conor@kernel.org>,
"Masahiro Yamada" <masahiroy@kernel.org>,
"Nicolas Schier" <nicolas@fjasle.eu>,
"Ard Biesheuvel" <ardb@kernel.org>,
"Marc Zyngier" <maz@kernel.org>,
"Mark Rutland" <mark.rutland@arm.com>,
"Mark Brown" <broonie@kernel.org>,
"Nick Desaulniers" <ndesaulniers@google.com>,
"Miguel Ojeda" <ojeda@kernel.org>,
"Alex Gaynor" <alex.gaynor@gmail.com>,
"Wedson Almeida Filho" <wedsonaf@gmail.com>,
"Boqun Feng" <boqun.feng@gmail.com>,
"Gary Guo" <gary@garyguo.net>,
"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
"Benno Lossin" <benno.lossin@proton.me>,
"Andreas Hindborg" <a.hindborg@samsung.com>,
"Valentin Obst" <kernel@valentinobst.de>,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
rust-for-linux@vger.kernel.org, "Kees Cook" <kees@kernel.org>
Subject: Re: [PATCH v4 2/2] rust: support for shadow call stack sanitizer
Date: Mon, 5 Aug 2024 18:13:40 +0100 [thread overview]
Message-ID: <20240805171340.GC10196@willie-the-truck> (raw)
In-Reply-To: <20240729-shadow-call-stack-v4-2-2a664b082ea4@google.com>
Hi Alice,
Just some minor comments on this:
On Mon, Jul 29, 2024 at 02:22:50PM +0000, Alice Ryhl wrote:
> To use the shadow call stack sanitizer, you must pass special flags:
>
> * On arm64, you must pass -ffixed-x18 to your compiler.
> * On riscv, you must pass --no-relax-gp to your linker.
Since this patch doesn't touch riscv, I think you can just talk about
arm64 in the commit message.
> These requirements also apply to Rust code. When using Rust on arm64,
> you must pass the -Zfixed-x18 flag to rustc, which has the same effect
> as the -ffixed-x18 flag does for C code. The -Zfixed-x18 flag requires
> rustc version 1.80.0 or greater.
>
> There is no need to pass any flags to rustc on riscv as only the linker
> requires additional flags on this platform.
>
> On older versions of Rust, it is still possible to use shadow call stack
> by passing -Ctarget-feature=+reserve-x18 instead of -Zfixed-x18.
> However, this flag emits a warning during the build, so this patch does
> not add support for using it.
>
> Currently, the compiler thinks that the aarch64-unknown-none target
"Currently" will probably age badly -- can you talk about a compiler
version instead (e.g. "prior to version nnn, the compiler thinks...").
> doesn't support -Zsanitizer=shadow-call-stack, so the build will fail if
> you enable shadow call stack in non-dynamic mode. See [1] for the
> relevant feature request. To avoid this compilation failure, Kconfig is
> set up to reject such configurations.
>
> The `depends on` clause is placed on `config RUST` to avoid a situation
> where enabling Rust silently turns off the sanitizer. Instead, turning
> on the sanitizer results in Rust being disabled. We generally do not
> want changes to CONFIG_RUST to result in any mitigations being changed
> or turned off.
>
> Link: https://github.com/rust-lang/rust/issues/121972 [1]
> Signed-off-by: Alice Ryhl <aliceryhl@google.com>
> ---
> Makefile | 1 +
> arch/arm64/Makefile | 3 +++
> init/Kconfig | 2 +-
> 3 files changed, 5 insertions(+), 1 deletion(-)
>
> diff --git a/Makefile b/Makefile
> index 2b5f9f098b6f..66daca7a9b57 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -928,6 +928,7 @@ ifdef CONFIG_SHADOW_CALL_STACK
> ifndef CONFIG_DYNAMIC_SCS
> CC_FLAGS_SCS := -fsanitize=shadow-call-stack
> KBUILD_CFLAGS += $(CC_FLAGS_SCS)
> +KBUILD_RUSTFLAGS += -Zsanitizer=shadow-call-stack
> endif
> export CC_FLAGS_SCS
> endif
> diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile
> index f6bc3da1ef11..b058c4803efb 100644
> --- a/arch/arm64/Makefile
> +++ b/arch/arm64/Makefile
> @@ -57,9 +57,11 @@ KBUILD_AFLAGS += $(call cc-option,-mabi=lp64)
> ifneq ($(CONFIG_UNWIND_TABLES),y)
> KBUILD_CFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
> KBUILD_AFLAGS += -fno-asynchronous-unwind-tables -fno-unwind-tables
> +KBUILD_RUSTFLAGS += -Cforce-unwind-tables=n
> else
> KBUILD_CFLAGS += -fasynchronous-unwind-tables
> KBUILD_AFLAGS += -fasynchronous-unwind-tables
> +KBUILD_RUSTFLAGS += -Cforce-unwind-tables=y -Zuse-sync-unwind=n
These unwind entries aren't mentioned at all in the commit message.
Please can you explain what you're doing here? I guess it's something to
do with the PAC patching? Maybe this hunk would be better as a separate
patch?
Will
next prev parent reply other threads:[~2024-08-05 17:14 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-29 14:22 [PATCH v4 0/2] Rust and the shadow call stack sanitizer Alice Ryhl
2024-07-29 14:22 ` [PATCH v4 1/2] rust: SHADOW_CALL_STACK is incompatible with Rust Alice Ryhl
2024-07-29 16:07 ` Miguel Ojeda
2024-07-29 14:22 ` [PATCH v4 2/2] rust: support for shadow call stack sanitizer Alice Ryhl
2024-07-29 16:10 ` Miguel Ojeda
2024-08-05 17:13 ` Will Deacon [this message]
2024-08-06 8:46 ` Alice Ryhl
2024-08-01 17:13 ` (subset) [PATCH v4 0/2] Rust and the " Catalin Marinas
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=20240805171340.GC10196@willie-the-truck \
--to=will@kernel.org \
--cc=Jamie.Cunliffe@arm.com \
--cc=a.hindborg@samsung.com \
--cc=alex.gaynor@gmail.com \
--cc=aliceryhl@google.com \
--cc=ardb@kernel.org \
--cc=benno.lossin@proton.me \
--cc=bjorn3_gh@protonmail.com \
--cc=boqun.feng@gmail.com \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=conor@kernel.org \
--cc=gary@garyguo.net \
--cc=kees@kernel.org \
--cc=kernel@valentinobst.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=masahiroy@kernel.org \
--cc=maz@kernel.org \
--cc=nathan@kernel.org \
--cc=ndesaulniers@google.com \
--cc=nicolas@fjasle.eu \
--cc=ojeda@kernel.org \
--cc=rust-for-linux@vger.kernel.org \
--cc=samitolvanen@google.com \
--cc=wedsonaf@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox