* [PATCH] objtool/rust: add one more `noreturn` Rust function
@ 2025-01-12 14:39 Miguel Ojeda
2025-01-12 14:47 ` Miguel Ojeda
` (2 more replies)
0 siblings, 3 replies; 8+ messages in thread
From: Miguel Ojeda @ 2025-01-12 14:39 UTC (permalink / raw)
To: Josh Poimboeuf, Peter Zijlstra, Miguel Ojeda, Alex Gaynor
Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, rust-for-linux,
linux-kernel, patches, stable
Starting with Rust 1.85.0 (currently in beta, to be released 2025-02-20),
under some kernel configurations with `CONFIG_RUST_DEBUG_ASSERTIONS=y`,
one may trigger a new `objtool` warning:
rust/kernel.o: warning: objtool: _R...securityNtB2_11SecurityCtx8as_bytes()
falls through to next function _R...core3ops4drop4Drop4drop()
due to a call to the `noreturn` symbol:
core::panicking::assert_failed::<usize, usize>
Thus add it to the list so that `objtool` knows it is actually `noreturn`.
Do so matching with `strstr` since it is a generic.
See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
for more details.
Cc: <stable@vger.kernel.org> # Needed in 6.12.y only (Rust is pinned in older LTSs).
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
tools/objtool/check.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index 76060da755b5..e7ec29dfdff2 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -218,6 +218,7 @@ static bool is_rust_noreturn(const struct symbol *func)
str_ends_with(func->name, "_4core9panicking18panic_bounds_check") ||
str_ends_with(func->name, "_4core9panicking19assert_failed_inner") ||
str_ends_with(func->name, "_4core9panicking36panic_misaligned_pointer_dereference") ||
+ strstr(func->name, "_4core9panicking13assert_failed") ||
strstr(func->name, "_4core9panicking11panic_const24panic_const_") ||
(strstr(func->name, "_4core5slice5index24slice_") &&
str_ends_with(func->name, "_fail"));
base-commit: 9d89551994a430b50c4fffcb1e617a057fa76e20
--
2.48.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] objtool/rust: add one more `noreturn` Rust function
2025-01-12 14:39 Miguel Ojeda
@ 2025-01-12 14:47 ` Miguel Ojeda
2025-01-12 14:54 ` Greg KH
2025-01-15 19:25 ` Gary Guo
2025-02-12 22:28 ` Miguel Ojeda
2 siblings, 1 reply; 8+ messages in thread
From: Miguel Ojeda @ 2025-01-12 14:47 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Josh Poimboeuf, Peter Zijlstra, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, rust-for-linux, linux-kernel, patches, stable
On Sun, Jan 12, 2025 at 3:40 PM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> for more details.
>
> Cc: <stable@vger.kernel.org> # Needed in 6.12.y only (Rust is pinned in older LTSs).
Greg/Sasha: I didn't add a Fixes since it is not really a "fix" for
that commit, but if you want it for automation please feel free to add
it:
Fixes: 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> + strstr(func->name, "_4core9panicking13assert_failed") ||
> strstr(func->name, "_4core9panicking11panic_const24panic_const_") ||
Nit: I should have probably put it after this one to keep it sorted.
objtool: happy to take this through the Rust tree or not, as you
prefer -- it is not urgent.
Thanks!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] objtool/rust: add one more `noreturn` Rust function
2025-01-12 14:47 ` Miguel Ojeda
@ 2025-01-12 14:54 ` Greg KH
0 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2025-01-12 14:54 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Miguel Ojeda, Josh Poimboeuf, Peter Zijlstra, Alex Gaynor,
Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, rust-for-linux,
linux-kernel, patches, stable
On Sun, Jan 12, 2025 at 03:47:03PM +0100, Miguel Ojeda wrote:
> On Sun, Jan 12, 2025 at 3:40 PM Miguel Ojeda <ojeda@kernel.org> wrote:
> >
> > See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> > for more details.
> >
> > Cc: <stable@vger.kernel.org> # Needed in 6.12.y only (Rust is pinned in older LTSs).
>
> Greg/Sasha: I didn't add a Fixes since it is not really a "fix" for
> that commit, but if you want it for automation please feel free to add
> it:
>
> Fixes: 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
Yeah, putting the Fixes: tag triggers our tools easier, but we can
manage either way :)
thanks,
greg k-h
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] objtool/rust: add one more `noreturn` Rust function
2025-01-12 14:39 Miguel Ojeda
2025-01-12 14:47 ` Miguel Ojeda
@ 2025-01-15 19:25 ` Gary Guo
2025-02-12 22:28 ` Miguel Ojeda
2 siblings, 0 replies; 8+ messages in thread
From: Gary Guo @ 2025-01-15 19:25 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Josh Poimboeuf, Peter Zijlstra, Alex Gaynor, Boqun Feng,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, rust-for-linux, linux-kernel, patches, stable
On Sun, 12 Jan 2025 15:39:51 +0100
Miguel Ojeda <ojeda@kernel.org> wrote:
> Starting with Rust 1.85.0 (currently in beta, to be released 2025-02-20),
> under some kernel configurations with `CONFIG_RUST_DEBUG_ASSERTIONS=y`,
> one may trigger a new `objtool` warning:
>
> rust/kernel.o: warning: objtool: _R...securityNtB2_11SecurityCtx8as_bytes()
> falls through to next function _R...core3ops4drop4Drop4drop()
>
> due to a call to the `noreturn` symbol:
>
> core::panicking::assert_failed::<usize, usize>
>
> Thus add it to the list so that `objtool` knows it is actually `noreturn`.
> Do so matching with `strstr` since it is a generic.
>
> See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> for more details.
>
> Cc: <stable@vger.kernel.org> # Needed in 6.12.y only (Rust is pinned in older LTSs).
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
> ---
> tools/objtool/check.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/tools/objtool/check.c b/tools/objtool/check.c
> index 76060da755b5..e7ec29dfdff2 100644
> --- a/tools/objtool/check.c
> +++ b/tools/objtool/check.c
> @@ -218,6 +218,7 @@ static bool is_rust_noreturn(const struct symbol *func)
> str_ends_with(func->name, "_4core9panicking18panic_bounds_check") ||
> str_ends_with(func->name, "_4core9panicking19assert_failed_inner") ||
> str_ends_with(func->name, "_4core9panicking36panic_misaligned_pointer_dereference") ||
> + strstr(func->name, "_4core9panicking13assert_failed") ||
> strstr(func->name, "_4core9panicking11panic_const24panic_const_") ||
> (strstr(func->name, "_4core5slice5index24slice_") &&
> str_ends_with(func->name, "_fail"));
>
> base-commit: 9d89551994a430b50c4fffcb1e617a057fa76e20
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] objtool/rust: add one more `noreturn` Rust function
2025-01-12 14:39 Miguel Ojeda
2025-01-12 14:47 ` Miguel Ojeda
2025-01-15 19:25 ` Gary Guo
@ 2025-02-12 22:28 ` Miguel Ojeda
2 siblings, 0 replies; 8+ messages in thread
From: Miguel Ojeda @ 2025-02-12 22:28 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Josh Poimboeuf, Peter Zijlstra, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, rust-for-linux, linux-kernel, patches, stable
On Sun, Jan 12, 2025 at 3:40 PM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> Starting with Rust 1.85.0 (currently in beta, to be released 2025-02-20),
> under some kernel configurations with `CONFIG_RUST_DEBUG_ASSERTIONS=y`,
> one may trigger a new `objtool` warning:
>
> rust/kernel.o: warning: objtool: _R...securityNtB2_11SecurityCtx8as_bytes()
> falls through to next function _R...core3ops4drop4Drop4drop()
>
> due to a call to the `noreturn` symbol:
>
> core::panicking::assert_failed::<usize, usize>
>
> Thus add it to the list so that `objtool` knows it is actually `noreturn`.
> Do so matching with `strstr` since it is a generic.
>
> See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> for more details.
>
> Cc: <stable@vger.kernel.org> # Needed in 6.12.y only (Rust is pinned in older LTSs).
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Applied to `rust-fixes` -- thanks everyone!
[ Updated Cc: stable@ to include 6.13.y. - Miguel ]
Cheers,
Miguel
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] objtool/rust: add one more `noreturn` Rust function
@ 2025-04-13 0:23 Miguel Ojeda
2025-04-14 14:07 ` Alice Ryhl
2025-04-14 15:08 ` Miguel Ojeda
0 siblings, 2 replies; 8+ messages in thread
From: Miguel Ojeda @ 2025-04-13 0:23 UTC (permalink / raw)
To: Josh Poimboeuf, Peter Zijlstra, Miguel Ojeda, Alex Gaynor
Cc: Boqun Feng, Gary Guo, Björn Roy Baron, Benno Lossin,
Andreas Hindborg, Alice Ryhl, Trevor Gross, Danilo Krummrich,
rust-for-linux, linux-kernel, patches, stable
Starting with Rust 1.86.0 (see upstream commit b151b513ba2b ("Insert null
checks for pointer dereferences when debug assertions are enabled") [1]),
under some kernel configurations with `CONFIG_RUST_DEBUG_ASSERTIONS=y`,
one may trigger a new `objtool` warning:
rust/kernel.o: warning: objtool: _R..._6kernel9workqueue6system()
falls through to next function _R...9workqueue14system_highpri()
due to a call to the `noreturn` symbol:
core::panicking::panic_null_pointer_dereference
Thus add it to the list so that `objtool` knows it is actually `noreturn`.
See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
for more details.
Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
Fixes: 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
Link: https://github.com/rust-lang/rust/commit/b151b513ba2b65c7506ec1a80f2712bbd09154d1 [1]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
tools/objtool/check.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/tools/objtool/check.c b/tools/objtool/check.c
index 4a1f6c3169b3..67006eeb30c8 100644
--- a/tools/objtool/check.c
+++ b/tools/objtool/check.c
@@ -225,6 +225,7 @@ static bool is_rust_noreturn(const struct symbol *func)
str_ends_with(func->name, "_4core9panicking14panic_nounwind") ||
str_ends_with(func->name, "_4core9panicking18panic_bounds_check") ||
str_ends_with(func->name, "_4core9panicking19assert_failed_inner") ||
+ str_ends_with(func->name, "_4core9panicking30panic_null_pointer_dereference") ||
str_ends_with(func->name, "_4core9panicking36panic_misaligned_pointer_dereference") ||
strstr(func->name, "_4core9panicking13assert_failed") ||
strstr(func->name, "_4core9panicking11panic_const24panic_const_") ||
base-commit: 0af2f6be1b4281385b618cb86ad946eded089ac8
--
2.49.0
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] objtool/rust: add one more `noreturn` Rust function
2025-04-13 0:23 [PATCH] objtool/rust: add one more `noreturn` Rust function Miguel Ojeda
@ 2025-04-14 14:07 ` Alice Ryhl
2025-04-14 15:08 ` Miguel Ojeda
1 sibling, 0 replies; 8+ messages in thread
From: Alice Ryhl @ 2025-04-14 14:07 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Josh Poimboeuf, Peter Zijlstra, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg,
Trevor Gross, Danilo Krummrich, rust-for-linux, linux-kernel,
patches, stable
On Sun, Apr 13, 2025 at 02:23:38AM +0200, Miguel Ojeda wrote:
> Starting with Rust 1.86.0 (see upstream commit b151b513ba2b ("Insert null
> checks for pointer dereferences when debug assertions are enabled") [1]),
> under some kernel configurations with `CONFIG_RUST_DEBUG_ASSERTIONS=y`,
> one may trigger a new `objtool` warning:
>
> rust/kernel.o: warning: objtool: _R..._6kernel9workqueue6system()
> falls through to next function _R...9workqueue14system_highpri()
>
> due to a call to the `noreturn` symbol:
>
> core::panicking::panic_null_pointer_dereference
>
> Thus add it to the list so that `objtool` knows it is actually `noreturn`.
>
> See commit 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> for more details.
>
> Cc: stable@vger.kernel.org # Needed in 6.12.y and later (Rust is pinned in older LTSs).
> Fixes: 56d680dd23c3 ("objtool/rust: list `noreturn` Rust functions")
> Link: https://github.com/rust-lang/rust/commit/b151b513ba2b65c7506ec1a80f2712bbd09154d1 [1]
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] objtool/rust: add one more `noreturn` Rust function
2025-04-13 0:23 [PATCH] objtool/rust: add one more `noreturn` Rust function Miguel Ojeda
2025-04-14 14:07 ` Alice Ryhl
@ 2025-04-14 15:08 ` Miguel Ojeda
1 sibling, 0 replies; 8+ messages in thread
From: Miguel Ojeda @ 2025-04-14 15:08 UTC (permalink / raw)
To: Miguel Ojeda
Cc: Josh Poimboeuf, Peter Zijlstra, Alex Gaynor, Boqun Feng, Gary Guo,
Björn Roy Baron, Benno Lossin, Andreas Hindborg, Alice Ryhl,
Trevor Gross, Danilo Krummrich, rust-for-linux, linux-kernel,
patches, stable
On Sun, Apr 13, 2025 at 2:26 AM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> Thus add it to the list so that `objtool` knows it is actually `noreturn`.
Applied to `rust-fixes` -- thanks everyone! I applied it early to
start to get testing -- tags still welcomed for a day or so.
I changed the title a bit (adding "for Rust 1.86.0") to avoid
confusion with a previous patch (and future ones), since a bot already
got confused.
If `objtool` prefers to apply this instead, please let me know and I
will drop it!
Cheers,
Miguel
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-04-14 15:08 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-13 0:23 [PATCH] objtool/rust: add one more `noreturn` Rust function Miguel Ojeda
2025-04-14 14:07 ` Alice Ryhl
2025-04-14 15:08 ` Miguel Ojeda
-- strict thread matches above, loose matches on Subject: below --
2025-01-12 14:39 Miguel Ojeda
2025-01-12 14:47 ` Miguel Ojeda
2025-01-12 14:54 ` Greg KH
2025-01-15 19:25 ` Gary Guo
2025-02-12 22:28 ` Miguel Ojeda
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).