* [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
@ 2026-07-20 3:55 FUJITA Tomonori
2026-07-20 5:54 ` Boqun Feng
2026-07-23 23:40 ` Gary Guo
0 siblings, 2 replies; 7+ messages in thread
From: FUJITA Tomonori @ 2026-07-20 3:55 UTC (permalink / raw)
To: ojeda
Cc: a.hindborg, acourbot, aliceryhl, bjorn3_gh, boqun, dakr,
daniel.almeida, gary, lossin, tamird, tmgross, work,
rust-for-linux, FUJITA Tomonori
From: FUJITA Tomonori <fujita.tomonori@gmail.com>
Fix the following dead_code warning on some configurations in an
atomic development branch:
warning: constant `WARN_ON_FLAGS` is never used
--> /linux/rust/kernel/bug.rs:126:19
|
126 | const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
| ^^^^^^^^^^^^^
|
::: /linux/rust/kernel/sync/srcu.rs:106:12
|
106 | if crate::warn_on!(
| ____________-
107 | | // SAFETY: By the type invariants, `self` contains a valid and pinned `struct srcu_struct`
108 | | // and `srcu_readers_active()` only checks the active reader count.
109 | | unsafe { bindings::srcu_readers_active(ptr) }
110 | | ) {
| |_________- in this macro invocation
|
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
= note: this warning originates in the macro `crate::warn_on` (in Nightly builds, run with -Z macro-backtrace for more info)
The warn_on! macro always defines a WARN_ON_FLAGS constant and hands it
to warn_flags!. On configurations where warn_flags! does not reference
its flags argument (the LOONGARCH/ARM variant, which only calls
WARN_ON(), and the !CONFIG_BUG no-op variant), the constant is left
unused and triggers a dead_code warning.
The warning only surfaces for callers inside the kernel crate itself:
uses from other crates expand an external macro, so the lint is
suppressed there.
Rename the constant to _WARN_ON_FLAGS so the underscore marks it as
possibly-unused, matching the existing _COND_STR constant in the same
macro. The name is still referenceable, so configurations that do use
the flags are unaffected.
Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
---
rust/kernel/bug.rs | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
index ed943960f851..2fd7ee25abcb 100644
--- a/rust/kernel/bug.rs
+++ b/rust/kernel/bug.rs
@@ -123,9 +123,9 @@ macro_rules! warn_on {
const _COND_STR: &str = file!();
if cond {
- const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
+ const _WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
- $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
+ $crate::warn_flags!(_COND_STR, _WARN_ON_FLAGS);
}
cond
}};
base-commit: 880c43b185ca52239e75bc546cc4f4d9154d0fed
--
2.43.0
^ permalink raw reply related [flat|nested] 7+ messages in thread* Re: [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
2026-07-20 3:55 [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant FUJITA Tomonori
@ 2026-07-20 5:54 ` Boqun Feng
2026-07-20 6:05 ` FUJITA Tomonori
2026-07-20 15:27 ` Paul E. McKenney
2026-07-23 23:40 ` Gary Guo
1 sibling, 2 replies; 7+ messages in thread
From: Boqun Feng @ 2026-07-20 5:54 UTC (permalink / raw)
To: FUJITA Tomonori
Cc: ojeda, a.hindborg, acourbot, aliceryhl, bjorn3_gh, dakr,
daniel.almeida, gary, lossin, tamird, tmgross, work,
rust-for-linux, FUJITA Tomonori, paulmck
On Mon, Jul 20, 2026 at 12:55:10PM +0900, FUJITA Tomonori wrote:
> From: FUJITA Tomonori <fujita.tomonori@gmail.com>
>
> Fix the following dead_code warning on some configurations in an
> atomic development branch:
>
> warning: constant `WARN_ON_FLAGS` is never used
> --> /linux/rust/kernel/bug.rs:126:19
> |
> 126 | const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> | ^^^^^^^^^^^^^
> |
> ::: /linux/rust/kernel/sync/srcu.rs:106:12
> |
> 106 | if crate::warn_on!(
> | ____________-
> 107 | | // SAFETY: By the type invariants, `self` contains a valid and pinned `struct srcu_struct`
> 108 | | // and `srcu_readers_active()` only checks the active reader count.
> 109 | | unsafe { bindings::srcu_readers_active(ptr) }
> 110 | | ) {
> | |_________- in this macro invocation
> |
> = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
> = note: this warning originates in the macro `crate::warn_on` (in Nightly builds, run with -Z macro-backtrace for more info)
>
> The warn_on! macro always defines a WARN_ON_FLAGS constant and hands it
> to warn_flags!. On configurations where warn_flags! does not reference
> its flags argument (the LOONGARCH/ARM variant, which only calls
> WARN_ON(), and the !CONFIG_BUG no-op variant), the constant is left
> unused and triggers a dead_code warning.
>
> The warning only surfaces for callers inside the kernel crate itself:
> uses from other crates expand an external macro, so the lint is
> suppressed there.
>
> Rename the constant to _WARN_ON_FLAGS so the underscore marks it as
> possibly-unused, matching the existing _COND_STR constant in the same
> macro. The name is still referenceable, so configurations that do use
> the flags are unaffected.
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
[Cc Paul]
Do we need a "Fixes" tag here?
FWIW:
Reviewed-by: Boqun Feng <boqun@kernel.org>
Regards,
Boqun
> ---
> rust/kernel/bug.rs | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
> index ed943960f851..2fd7ee25abcb 100644
> --- a/rust/kernel/bug.rs
> +++ b/rust/kernel/bug.rs
> @@ -123,9 +123,9 @@ macro_rules! warn_on {
> const _COND_STR: &str = file!();
>
> if cond {
> - const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> + const _WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>
> - $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
> + $crate::warn_flags!(_COND_STR, _WARN_ON_FLAGS);
> }
> cond
> }};
>
> base-commit: 880c43b185ca52239e75bc546cc4f4d9154d0fed
> --
> 2.43.0
>
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
2026-07-20 5:54 ` Boqun Feng
@ 2026-07-20 6:05 ` FUJITA Tomonori
2026-07-20 15:27 ` Paul E. McKenney
1 sibling, 0 replies; 7+ messages in thread
From: FUJITA Tomonori @ 2026-07-20 6:05 UTC (permalink / raw)
To: boqun
Cc: tomo, ojeda, a.hindborg, acourbot, aliceryhl, bjorn3_gh, dakr,
daniel.almeida, gary, lossin, tamird, tmgross, work,
rust-for-linux, fujita.tomonori, paulmck
On Sun, 19 Jul 2026 22:54:24 -0700
Boqun Feng <boqun@kernel.org> wrote:
> On Mon, Jul 20, 2026 at 12:55:10PM +0900, FUJITA Tomonori wrote:
>> From: FUJITA Tomonori <fujita.tomonori@gmail.com>
>>
>> Fix the following dead_code warning on some configurations in an
>> atomic development branch:
>>
>> warning: constant `WARN_ON_FLAGS` is never used
>> --> /linux/rust/kernel/bug.rs:126:19
>> |
>> 126 | const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>> | ^^^^^^^^^^^^^
>> |
>> ::: /linux/rust/kernel/sync/srcu.rs:106:12
>> |
>> 106 | if crate::warn_on!(
>> | ____________-
>> 107 | | // SAFETY: By the type invariants, `self` contains a valid and pinned `struct srcu_struct`
>> 108 | | // and `srcu_readers_active()` only checks the active reader count.
>> 109 | | unsafe { bindings::srcu_readers_active(ptr) }
>> 110 | | ) {
>> | |_________- in this macro invocation
>> |
>> = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
>> = note: this warning originates in the macro `crate::warn_on` (in Nightly builds, run with -Z macro-backtrace for more info)
>>
>> The warn_on! macro always defines a WARN_ON_FLAGS constant and hands it
>> to warn_flags!. On configurations where warn_flags! does not reference
>> its flags argument (the LOONGARCH/ARM variant, which only calls
>> WARN_ON(), and the !CONFIG_BUG no-op variant), the constant is left
>> unused and triggers a dead_code warning.
>>
>> The warning only surfaces for callers inside the kernel crate itself:
>> uses from other crates expand an external macro, so the lint is
>> suppressed there.
>>
>> Rename the constant to _WARN_ON_FLAGS so the underscore marks it as
>> possibly-unused, matching the existing _COND_STR constant in the same
>> macro. The name is still referenceable, so configurations that do use
>> the flags are unaffected.
>>
>> Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
>
> [Cc Paul]
>
> Do we need a "Fixes" tag here?
Right, we likely do.
Fixes: dff64b072708 ("rust: Add warn_on macro")
> FWIW:
>
> Reviewed-by: Boqun Feng <boqun@kernel.org>
Thanks!
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
2026-07-20 5:54 ` Boqun Feng
2026-07-20 6:05 ` FUJITA Tomonori
@ 2026-07-20 15:27 ` Paul E. McKenney
1 sibling, 0 replies; 7+ messages in thread
From: Paul E. McKenney @ 2026-07-20 15:27 UTC (permalink / raw)
To: Boqun Feng
Cc: FUJITA Tomonori, ojeda, a.hindborg, acourbot, aliceryhl,
bjorn3_gh, dakr, daniel.almeida, gary, lossin, tamird, tmgross,
work, rust-for-linux, FUJITA Tomonori
On Sun, Jul 19, 2026 at 10:54:24PM -0700, Boqun Feng wrote:
> On Mon, Jul 20, 2026 at 12:55:10PM +0900, FUJITA Tomonori wrote:
> > From: FUJITA Tomonori <fujita.tomonori@gmail.com>
> >
> > Fix the following dead_code warning on some configurations in an
> > atomic development branch:
> >
> > warning: constant `WARN_ON_FLAGS` is never used
> > --> /linux/rust/kernel/bug.rs:126:19
> > |
> > 126 | const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> > | ^^^^^^^^^^^^^
> > |
> > ::: /linux/rust/kernel/sync/srcu.rs:106:12
> > |
> > 106 | if crate::warn_on!(
> > | ____________-
> > 107 | | // SAFETY: By the type invariants, `self` contains a valid and pinned `struct srcu_struct`
> > 108 | | // and `srcu_readers_active()` only checks the active reader count.
> > 109 | | unsafe { bindings::srcu_readers_active(ptr) }
> > 110 | | ) {
> > | |_________- in this macro invocation
> > |
> > = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
> > = note: this warning originates in the macro `crate::warn_on` (in Nightly builds, run with -Z macro-backtrace for more info)
> >
> > The warn_on! macro always defines a WARN_ON_FLAGS constant and hands it
> > to warn_flags!. On configurations where warn_flags! does not reference
> > its flags argument (the LOONGARCH/ARM variant, which only calls
> > WARN_ON(), and the !CONFIG_BUG no-op variant), the constant is left
> > unused and triggers a dead_code warning.
> >
> > The warning only surfaces for callers inside the kernel crate itself:
> > uses from other crates expand an external macro, so the lint is
> > suppressed there.
> >
> > Rename the constant to _WARN_ON_FLAGS so the underscore marks it as
> > possibly-unused, matching the existing _COND_STR constant in the same
> > macro. The name is still referenceable, so configurations that do use
> > the flags are unaffected.
> >
> > Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
>
> [Cc Paul]
>
> Do we need a "Fixes" tag here?
Future bug-chasers would thank us for a "Fixes" tag. ;-)
> FWIW:
>
> Reviewed-by: Boqun Feng <boqun@kernel.org>
And thank you both for the fix. I will keep the Rust-SRCU series.
Until further notice, anyway. ;-)
Thanx, Paul
> Regards,
> Boqun
>
> > ---
> > rust/kernel/bug.rs | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
> > index ed943960f851..2fd7ee25abcb 100644
> > --- a/rust/kernel/bug.rs
> > +++ b/rust/kernel/bug.rs
> > @@ -123,9 +123,9 @@ macro_rules! warn_on {
> > const _COND_STR: &str = file!();
> >
> > if cond {
> > - const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> > + const _WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> >
> > - $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
> > + $crate::warn_flags!(_COND_STR, _WARN_ON_FLAGS);
> > }
> > cond
> > }};
> >
> > base-commit: 880c43b185ca52239e75bc546cc4f4d9154d0fed
> > --
> > 2.43.0
> >
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
2026-07-20 3:55 [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant FUJITA Tomonori
2026-07-20 5:54 ` Boqun Feng
@ 2026-07-23 23:40 ` Gary Guo
2026-07-24 4:08 ` FUJITA Tomonori
1 sibling, 1 reply; 7+ messages in thread
From: Gary Guo @ 2026-07-23 23:40 UTC (permalink / raw)
To: FUJITA Tomonori, ojeda
Cc: a.hindborg, acourbot, aliceryhl, bjorn3_gh, boqun, dakr,
daniel.almeida, gary, lossin, tamird, tmgross, work,
rust-for-linux, FUJITA Tomonori
On Mon Jul 20, 2026 at 4:55 AM BST, FUJITA Tomonori wrote:
> From: FUJITA Tomonori <fujita.tomonori@gmail.com>
>
> Fix the following dead_code warning on some configurations in an
> atomic development branch:
>
> warning: constant `WARN_ON_FLAGS` is never used
> --> /linux/rust/kernel/bug.rs:126:19
> |
> 126 | const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> | ^^^^^^^^^^^^^
> |
> ::: /linux/rust/kernel/sync/srcu.rs:106:12
> |
> 106 | if crate::warn_on!(
> | ____________-
> 107 | | // SAFETY: By the type invariants, `self` contains a valid and pinned `struct srcu_struct`
> 108 | | // and `srcu_readers_active()` only checks the active reader count.
> 109 | | unsafe { bindings::srcu_readers_active(ptr) }
> 110 | | ) {
> | |_________- in this macro invocation
> |
> = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
> = note: this warning originates in the macro `crate::warn_on` (in Nightly builds, run with -Z macro-backtrace for more info)
>
> The warn_on! macro always defines a WARN_ON_FLAGS constant and hands it
> to warn_flags!. On configurations where warn_flags! does not reference
> its flags argument (the LOONGARCH/ARM variant, which only calls
> WARN_ON(), and the !CONFIG_BUG no-op variant), the constant is left
> unused and triggers a dead_code warning.
>
> The warning only surfaces for callers inside the kernel crate itself:
> uses from other crates expand an external macro, so the lint is
> suppressed there.
>
> Rename the constant to _WARN_ON_FLAGS so the underscore marks it as
> possibly-unused, matching the existing _COND_STR constant in the same
> macro. The name is still referenceable, so configurations that do use
> the flags are unaffected.
>
> Signed-off-by: FUJITA Tomonori <fujita.tomonori@gmail.com>
> ---
> rust/kernel/bug.rs | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
> index ed943960f851..2fd7ee25abcb 100644
> --- a/rust/kernel/bug.rs
> +++ b/rust/kernel/bug.rs
> @@ -123,9 +123,9 @@ macro_rules! warn_on {
> const _COND_STR: &str = file!();
>
> if cond {
> - const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
> + const _WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>
> - $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
> + $crate::warn_flags!(_COND_STR, _WARN_ON_FLAGS);
Hmm, why bother adding a const for this rather than just invoke
$crate::warn_flags!(
_COND_STR,
const { ... }
)
?
Also, the proper fix would be to mark it as used in the `warn_flags` macro
that discard the expression.
if false {
_ = $flags;
}
Best,
Gary
> }
> cond
> }};
>
> base-commit: 880c43b185ca52239e75bc546cc4f4d9154d0fed
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
2026-07-23 23:40 ` Gary Guo
@ 2026-07-24 4:08 ` FUJITA Tomonori
2026-07-24 13:23 ` Gary Guo
0 siblings, 1 reply; 7+ messages in thread
From: FUJITA Tomonori @ 2026-07-24 4:08 UTC (permalink / raw)
To: gary
Cc: tomo, ojeda, a.hindborg, acourbot, aliceryhl, bjorn3_gh, boqun,
dakr, daniel.almeida, lossin, tamird, tmgross, work,
rust-for-linux, fujita.tomonori
On Fri, 24 Jul 2026 00:40:04 +0100
"Gary Guo" <gary@garyguo.net> wrote:
>> diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
>> index ed943960f851..2fd7ee25abcb 100644
>> --- a/rust/kernel/bug.rs
>> +++ b/rust/kernel/bug.rs
>> @@ -123,9 +123,9 @@ macro_rules! warn_on {
>> const _COND_STR: &str = file!();
>>
>> if cond {
>> - const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>> + const _WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>>
>> - $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
>> + $crate::warn_flags!(_COND_STR, _WARN_ON_FLAGS);
>
> Hmm, why bother adding a const for this rather than just invoke
>
> $crate::warn_flags!(
> _COND_STR,
> const { ... }
> )
>
> ?
Ah, `(const { ... })` works.
> Also, the proper fix would be to mark it as used in the `warn_flags` macro
> that discard the expression.
>
> if false {
> _ = $flags;
> }
Yeah, having the callee that discards the argument consume it is more
logical than working around it at the caller. I'll send v2 shortly.
The same reasoning applies to `$file`. Since there is no warning right
now, I'll rename `_COND_STR` to `COND_STR` and consume `$file` in a
separate patch for consistency.
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant
2026-07-24 4:08 ` FUJITA Tomonori
@ 2026-07-24 13:23 ` Gary Guo
0 siblings, 0 replies; 7+ messages in thread
From: Gary Guo @ 2026-07-24 13:23 UTC (permalink / raw)
To: FUJITA Tomonori, gary
Cc: ojeda, a.hindborg, acourbot, aliceryhl, bjorn3_gh, boqun, dakr,
daniel.almeida, lossin, tamird, tmgross, work, rust-for-linux,
fujita.tomonori
On Fri Jul 24, 2026 at 5:08 AM BST, FUJITA Tomonori wrote:
> On Fri, 24 Jul 2026 00:40:04 +0100
> "Gary Guo" <gary@garyguo.net> wrote:
>
>>> diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs
>>> index ed943960f851..2fd7ee25abcb 100644
>>> --- a/rust/kernel/bug.rs
>>> +++ b/rust/kernel/bug.rs
>>> @@ -123,9 +123,9 @@ macro_rules! warn_on {
>>> const _COND_STR: &str = file!();
>>>
>>> if cond {
>>> - const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>>> + const _WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN);
>>>
>>> - $crate::warn_flags!(_COND_STR, WARN_ON_FLAGS);
>>> + $crate::warn_flags!(_COND_STR, _WARN_ON_FLAGS);
>>
>> Hmm, why bother adding a const for this rather than just invoke
>>
>> $crate::warn_flags!(
>> _COND_STR,
>> const { ... }
>> )
>>
>> ?
>
> Ah, `(const { ... })` works.
>
>
>> Also, the proper fix would be to mark it as used in the `warn_flags` macro
>> that discard the expression.
>>
>> if false {
>> _ = $flags;
>> }
>
>
> Yeah, having the callee that discards the argument consume it is more
> logical than working around it at the caller. I'll send v2 shortly.
>
> The same reasoning applies to `$file`. Since there is no warning right
> now, I'll rename `_COND_STR` to `COND_STR` and consume `$file` in a
> separate patch for consistency.
Given that this is closely related to $flags I'd do it in a single patch.
Best,
Gary
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-07-24 13:23 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-20 3:55 [PATCH v1] rust: bug: prevent dead_code warning from warn_on!'s flags constant FUJITA Tomonori
2026-07-20 5:54 ` Boqun Feng
2026-07-20 6:05 ` FUJITA Tomonori
2026-07-20 15:27 ` Paul E. McKenney
2026-07-23 23:40 ` Gary Guo
2026-07-24 4:08 ` FUJITA Tomonori
2026-07-24 13:23 ` Gary Guo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox