Re: [PATCH v2] rust: bug: fix warn_on macro build error on UML
Miguel Ojeda <[email protected]>
| Newsgroups | org.kernel.vger.rust-for-linux,org.kernel.vger.stable |
|---|---|
| Message-ID | <CANiq72k0iFw84GTq+PUUnFb-+3NfeSJWoGFOua9Q9Q0umceU0w@mail.gmail.com> |
On Fri, Aug 7, 2026 at 1:24 PM FUJITA Tomonori <[email protected]> wrote: > > From: FUJITA Tomonori <[email protected]> > > Callers that go through `kernel::prelude` have `CStrExt` in scope, but > code inside the `kernel` crate imports explicitly and may not. Using > `warn_on!` from such a module fails to build on UML, which is the only > configuration where `warn_flags!` needs a C string pointer rather than an > inline asm bug entry: > > error[E0599]: no method named `as_char_ptr` found for reference `&ffi::CStr` in the current scope > --> linux/rust/kernel/bug.rs:83:49 > | > 83 | $crate::c_str!(::core::file!()).as_char_ptr(), > | ^^^^^^^^^^^ > | > ::: linux/rust/kernel/time.rs:427:9 > | > 427 | warn_on!(self.nanos < 0); > | ------------------------ in this macro invocation > | > = help: items from traits can only be used if the trait is in scope > = note: this error originates in the macro `$crate::warn_flags` which comes from the expansion of the macro `warn_on` (in Nightly builds, run with -Z mac) > help: trait `CStrExt` which provides `as_char_ptr` is implemented but not in scope; perhaps you want to import it > --> linux/rust/kernel/time.rs:27:1 > | > 27 + use crate::str::CStrExt; > > Call the method through its fully qualified path, which resolves > without any import at the expansion site. > > Cc: [email protected] > Fixes: dff64b072708 ("rust: Add warn_on macro") > Signed-off-by: FUJITA Tomonori <[email protected]> Applied to `rust-next` -- thanks! Cheers, Miguel