rust-for-linux.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).