Re: [PATCH] rust: bug: fix `dead_code` warning in `warn_on!`
FUJITA Tomonori <[email protected]>
| Newsgroups | dev.linux.lists.soc,dev.linux.lists.loongarch,org.infradead.lists.linux-arm-kernel,org.kernel.vger.rust-for-linux,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On Sat, 8 Aug 2026 00:14:29 +0200 Miguel Ojeda <[email protected]> wrote: > On arm and loongarch64, or under `CONFIG_BUG=n`, the upcoming SRCU > abstractions from commit > > 59cf3a5bda61 ("rust: sync: add SRCU abstraction") > > use `warn_on!`, which in turn warns: > > error: constant `WARN_ON_FLAGS` is never used > --> rust/kernel/bug.rs:126:19 > | > 126 | const WARN_ON_FLAGS: u32 = $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN); > | ^^^^^^^^^^^^^ > | > ::: 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: `-D dead-code` implied by `-D warnings` > = help: to override `-D warnings` add `#[allow(dead_code)]` > = note: this error originates in the macro `crate::warn_on` (in Nightly builds, run with -Z macro-backtrace for more info) > > The reason is that `warn_flags!` discards both arguments in those cases, > and so the `const` becomes unused. And since it is a macro, it went > unnoticed so far. > > Thus fix it by simplifying by removing the `const`. > > Cc: [email protected] > Fixes: dff64b072708 ("rust: Add warn_on macro") > Signed-off-by: Miguel Ojeda <[email protected]> > --- > Either this or adding an underscore. > > rust/kernel/bug.rs | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/rust/kernel/bug.rs b/rust/kernel/bug.rs > index ed943960f851..874adb93cdfe 100644 > --- a/rust/kernel/bug.rs > +++ b/rust/kernel/bug.rs > @@ -123,9 +123,10 @@ macro_rules! warn_on { > const _COND_STR: &str = file!(); > > if cond { > - 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, > + $crate::bug::bugflag_taint($crate::bindings::TAINT_WARN) > + ); > } > cond > }}; > > base-commit: dc01dfb37b34beeefcfe1c3055364d41a4070c7e > -- > 2.55.0 I sent a fix for this bug a few days ago: https://lore.kernel.org/all/[email protected]/ If you prefer the simpler version, v1 might work. https://lore.kernel.org/all/[email protected]/