From: Greg Kroah-Hartman Date: Thu, 30 Jul 2026 12:40:26 +0000 (+0200) Subject: 6.18-stable patches X-Git-Tag: v6.6.148~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2cb524480268d28d2a5f1607217e26badf8f76bd;p=thirdparty%2Fkernel%2Fstable-queue.git 6.18-stable patches added patches: rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch --- diff --git a/queue-6.18/rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch b/queue-6.18/rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch new file mode 100644 index 0000000000..f2602aa795 --- /dev/null +++ b/queue-6.18/rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch @@ -0,0 +1,107 @@ +From 608045a91d9176d66b2114d0006bc8b57dff2ca9 Mon Sep 17 00:00:00 2001 +From: Miguel Ojeda +Date: Mon, 15 Jun 2026 16:32:25 +0200 +Subject: rust: allow `suspicious_runtime_symbol_definitions` lint for Rust >= 1.98 + +From: Miguel Ojeda + +commit 608045a91d9176d66b2114d0006bc8b57dff2ca9 upstream. + +Starting with Rust 1.98.0 (expected 2026-08-20), Rust is introducing a +couple new lints, `invalid_runtime_symbol_definitions` (deny-by-default) +and `suspicious_runtime_symbol_definitions` (warn-by-default), which check +the signature of items whose symbol name is a runtime symbol expected by +`core`. + +Our build hits the second one, i.e. the warning: + + error: suspicious definition of the runtime `strlen` symbol used by the standard library + --> rust/bindings/bindings_generated.rs:20018:5 + | + 20018 | pub fn strlen(s: *const ffi::c_char) -> usize; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: expected `unsafe extern "C" fn(*const i8) -> usize` + found `unsafe extern "C" fn(*const u8) -> usize` + = help: either fix the signature or remove any attributes like `#[unsafe(no_mangle)]`, `#[unsafe(export_name = "strlen")]`, or `#[link_name = "strlen"]` + = help: allow this lint if the signature is compatible + = note: `-D suspicious-runtime-symbol-definitions` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(suspicious_runtime_symbol_definitions)]` + + error: suspicious definition of the runtime `strlen` symbol used by the standard library + --> rust/uapi/uapi_generated.rs:14236:5 + | + 14236 | pub fn strlen(s: *const ffi::c_char) -> usize; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: expected `unsafe extern "C" fn(*const i8) -> usize` + found `unsafe extern "C" fn(*const u8) -> usize` + = help: either fix the signature or remove any attributes like `#[unsafe(no_mangle)]`, `#[unsafe(export_name = "strlen")]`, or `#[link_name = "strlen"]` + = help: allow this lint if the signature is compatible + = note: `-D suspicious-runtime-symbol-definitions` implied by `-D warnings` + = help: to override `-D warnings` add `#[allow(suspicious_runtime_symbol_definitions)]` + +Thus `allow` the lint in `bindings` and `uapi`. + +A more targeted alternative to avoid `allow`ing it would be to pass +`--blocklist-function strlen` to `bindgen`, but we would perhaps need +to adjust if other C headers end up adding more (or Rust checking more). +Since it is just the less critical one that we hit, and since eventually +this should be properly fixed by getting upstream Rust to provide a flag +like GCC/Clang's `-funsigned-char` [2][3], just `allow` it for now. + +Cc: Urgau +Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs). +Link: https://github.com/rust-lang/rust/pull/155521 [1] +Link: https://github.com/rust-lang/rust/issues/138446 [2] +Link: https://github.com/Rust-for-Linux/linux/issues/355 [3] +Reviewed-by: Gary Guo +Reviewed-by: Alice Ryhl +Reviewed-by: Tamir Duberstein +Link: https://patch.msgid.link/20260615143225.471756-1-ojeda@kernel.org +Signed-off-by: Miguel Ojeda +Signed-off-by: Greg Kroah-Hartman +--- + init/Kconfig | 3 +++ + rust/bindings/lib.rs | 4 ++++ + rust/uapi/lib.rs | 4 ++++ + 3 files changed, 11 insertions(+) + +--- a/init/Kconfig ++++ b/init/Kconfig +@@ -162,6 +162,9 @@ config RUSTC_HAS_FILE_WITH_NUL + config RUSTC_HAS_FILE_AS_C_STR + def_bool RUSTC_VERSION >= 109100 + ++config RUSTC_HAS_SUSPICIOUS_RUNTIME_SYMBOL_DEFINITIONS ++ def_bool RUSTC_VERSION >= 109800 ++ + config PAHOLE_VERSION + int + default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) +--- a/rust/bindings/lib.rs ++++ b/rust/bindings/lib.rs +@@ -30,6 +30,10 @@ + #[allow(clippy::ref_as_ptr)] + #[allow(clippy::undocumented_unsafe_blocks)] + #[cfg_attr(CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES, allow(unnecessary_transmutes))] ++#[cfg_attr( ++ CONFIG_RUSTC_HAS_SUSPICIOUS_RUNTIME_SYMBOL_DEFINITIONS, ++ allow(suspicious_runtime_symbol_definitions) ++)] + mod bindings_raw { + use pin_init::{MaybeZeroable, Zeroable}; + +--- a/rust/uapi/lib.rs ++++ b/rust/uapi/lib.rs +@@ -28,6 +28,10 @@ + unsafe_op_in_unsafe_fn + )] + #![cfg_attr(CONFIG_RUSTC_HAS_UNNECESSARY_TRANSMUTES, allow(unnecessary_transmutes))] ++#![cfg_attr( ++ CONFIG_RUSTC_HAS_SUSPICIOUS_RUNTIME_SYMBOL_DEFINITIONS, ++ allow(suspicious_runtime_symbol_definitions) ++)] + + // Manual definition of blocklisted types. + type __kernel_size_t = usize; diff --git a/queue-6.18/series b/queue-6.18/series index 5646d49cb8..9426a0c022 100644 --- a/queue-6.18/series +++ b/queue-6.18/series @@ -671,3 +671,4 @@ i3c-mipi-i3c-hci-fix-hot-join-nack.patch i3c-mipi-i3c-hci-fix-handling-of-shared-irqs-during-early-initialization.patch mm-damon-core-validate-ranges-in-damon_set_regions.patch mm-damon-core-disallow-overlapping-input-ranges-for-damon_set_regions.patch +rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch