]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.18-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Jul 2026 12:40:26 +0000 (14:40 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 30 Jul 2026 12:40:26 +0000 (14:40 +0200)
added patches:
rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch

queue-6.18/rust-allow-suspicious_runtime_symbol_definitions-lint-for-rust-1.98.patch [new file with mode: 0644]
queue-6.18/series

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 (file)
index 0000000..f2602aa
--- /dev/null
@@ -0,0 +1,107 @@
+From 608045a91d9176d66b2114d0006bc8b57dff2ca9 Mon Sep 17 00:00:00 2001
+From: Miguel Ojeda <ojeda@kernel.org>
+Date: Mon, 15 Jun 2026 16:32:25 +0200
+Subject: rust: allow `suspicious_runtime_symbol_definitions` lint for Rust >= 1.98
+
+From: Miguel Ojeda <ojeda@kernel.org>
+
+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 <urgau@numericable.fr>
+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 <gary@garyguo.net>
+Reviewed-by: Alice Ryhl <aliceryhl@google.com>
+Reviewed-by: Tamir Duberstein <tamird@kernel.org>
+Link: https://patch.msgid.link/20260615143225.471756-1-ojeda@kernel.org
+Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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;
index 5646d49cb8ee46890166772d4b88300ec641e24e..9426a0c0227a657b418f7134da063b922d736c2c 100644 (file)
@@ -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