Rather than export a macro that delegates to `core::format_args`, simply
re-export `core::format_args` as `fmt` from the prelude. This exposes
clippy warnings which were previously obscured by this macro, such as:
warning: variables can be used directly in the `format!` string
--> ../drivers/cpufreq/rcpufreq_dt.rs:21:43
|
21 | let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?;
| ^^^^^^^^^^^^^^^^^^^^^^^
|
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args
= note: `-W clippy::uninlined-format-args` implied by `-W clippy::all`
= help: to override `-W clippy::all` add `#[allow(clippy::uninlined_format_args)]`
help: change this to
|
21 - let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?;
21 + let prop_name = CString::try_from_fmt(fmt!("{name}-supply")).ok()?;
|
Thus fix them in the same commit. This could possibly be fixed in two
stages, but the diff is small enough (outside of kernel/str.rs) that I
hope it can taken in a single commit.
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
---
drivers/cpufreq/rcpufreq_dt.rs | 3 +--
drivers/gpu/nova-core/firmware.rs | 5 +++--
rust/kernel/opp.rs | 2 +-
rust/kernel/prelude.rs | 2 +-
rust/kernel/str.rs | 34 ++++++++++++++--------------------
5 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/drivers/cpufreq/rcpufreq_dt.rs b/drivers/cpufreq/rcpufreq_dt.rs
index 30a170570c0e..4608d2286fa1 100644
--- a/drivers/cpufreq/rcpufreq_dt.rs
+++ b/drivers/cpufreq/rcpufreq_dt.rs
@@ -9,7 +9,6 @@
cpumask::CpumaskVar,
device::{Core, Device},
error::code::*,
- fmt,
macros::vtable,
module_platform_driver, of, opp, platform,
prelude::*,
@@ -19,7 +18,7 @@
/// Finds exact supply name from the OF node.
fn find_supply_name_exact(dev: &Device, name: &str) -> Option<CString> {
- let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?;
+ let prop_name = CString::try_from_fmt(fmt!("{name}-supply")).ok()?;
dev.property_present(&prop_name)
.then(|| CString::try_from_fmt(fmt!("{name}")).ok())
.flatten()
diff --git a/drivers/gpu/nova-core/firmware.rs b/drivers/gpu/nova-core/firmware.rs
index 4b8a38358a4f..e503a4fddae0 100644
--- a/drivers/gpu/nova-core/firmware.rs
+++ b/drivers/gpu/nova-core/firmware.rs
@@ -24,11 +24,12 @@ pub(crate) struct Firmware {
impl Firmware {
pub(crate) fn new(dev: &device::Device, chipset: Chipset, ver: &str) -> Result<Firmware> {
- let mut chip_name = CString::try_from_fmt(fmt!("{}", chipset))?;
+ let mut chip_name = CString::try_from_fmt(fmt!("{chipset}"))?;
chip_name.make_ascii_lowercase();
+ let chip_name = &*chip_name;
let request = |name_| {
- CString::try_from_fmt(fmt!("nvidia/{}/gsp/{}-{}.bin", &*chip_name, name_, ver))
+ CString::try_from_fmt(fmt!("nvidia/{chip_name}/gsp/{name_}-{ver}.bin"))
.and_then(|path| firmware::Firmware::request(&path, dev))
};
diff --git a/rust/kernel/opp.rs b/rust/kernel/opp.rs
index 0e94cb2703ec..5a161ad12bf7 100644
--- a/rust/kernel/opp.rs
+++ b/rust/kernel/opp.rs
@@ -345,7 +345,7 @@ fn drop(&mut self) {
/// impl ConfigOps for Driver {}
///
/// fn configure(dev: &ARef<Device>) -> Result<ConfigToken> {
-/// let name = CString::try_from_fmt(fmt!("{}", "slow"))?;
+/// let name = CString::try_from_fmt(fmt!("slow"))?;
///
/// // The OPP configuration is cleared once the [`ConfigToken`] goes out of scope.
/// Config::<Driver>::new()
diff --git a/rust/kernel/prelude.rs b/rust/kernel/prelude.rs
index 2f30a398dddd..3ca934885797 100644
--- a/rust/kernel/prelude.rs
+++ b/rust/kernel/prelude.rs
@@ -31,9 +31,9 @@
// `super::std_vendor` is hidden, which makes the macro inline for some reason.
#[doc(no_inline)]
pub use super::dbg;
-pub use super::fmt;
pub use super::{dev_alert, dev_crit, dev_dbg, dev_emerg, dev_err, dev_info, dev_notice, dev_warn};
pub use super::{pr_alert, pr_crit, pr_debug, pr_emerg, pr_err, pr_info, pr_notice, pr_warn};
+pub use core::format_args as fmt;
pub use super::{try_init, try_pin_init};
diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs
index cbc8b459ed41..10399fb7af45 100644
--- a/rust/kernel/str.rs
+++ b/rust/kernel/str.rs
@@ -54,13 +54,13 @@ impl fmt::Display for BStr {
/// Formats printable ASCII characters, escaping the rest.
///
/// ```
- /// # use kernel::{fmt, b_str, str::{BStr, CString}};
+ /// # use kernel::{prelude::fmt, b_str, str::{BStr, CString}};
/// let ascii = b_str!("Hello, BStr!");
- /// let s = CString::try_from_fmt(fmt!("{}", ascii))?;
+ /// let s = CString::try_from_fmt(fmt!("{ascii}"))?;
/// assert_eq!(s.as_bytes(), "Hello, BStr!".as_bytes());
///
/// let non_ascii = b_str!("🦀");
- /// let s = CString::try_from_fmt(fmt!("{}", non_ascii))?;
+ /// let s = CString::try_from_fmt(fmt!("{non_ascii}"))?;
/// assert_eq!(s.as_bytes(), "\\xf0\\x9f\\xa6\\x80".as_bytes());
/// # Ok::<(), kernel::error::Error>(())
/// ```
@@ -85,14 +85,14 @@ impl fmt::Debug for BStr {
/// escaping the rest.
///
/// ```
- /// # use kernel::{fmt, b_str, str::{BStr, CString}};
+ /// # use kernel::{prelude::fmt, b_str, str::{BStr, CString}};
/// // Embedded double quotes are escaped.
/// let ascii = b_str!("Hello, \"BStr\"!");
- /// let s = CString::try_from_fmt(fmt!("{:?}", ascii))?;
+ /// let s = CString::try_from_fmt(fmt!("{ascii:?}"))?;
/// assert_eq!(s.as_bytes(), "\"Hello, \\\"BStr\\\"!\"".as_bytes());
///
/// let non_ascii = b_str!("😺");
- /// let s = CString::try_from_fmt(fmt!("{:?}", non_ascii))?;
+ /// let s = CString::try_from_fmt(fmt!("{non_ascii:?}"))?;
/// assert_eq!(s.as_bytes(), "\"\\xf0\\x9f\\x98\\xba\"".as_bytes());
/// # Ok::<(), kernel::error::Error>(())
/// ```
@@ -429,15 +429,15 @@ impl fmt::Display for CStr {
///
/// ```
/// # use kernel::c_str;
- /// # use kernel::fmt;
+ /// # use kernel::prelude::fmt;
/// # use kernel::str::CStr;
/// # use kernel::str::CString;
/// let penguin = c_str!("🐧");
- /// let s = CString::try_from_fmt(fmt!("{}", penguin))?;
+ /// let s = CString::try_from_fmt(fmt!("{penguin}"))?;
/// assert_eq!(s.as_bytes_with_nul(), "\\xf0\\x9f\\x90\\xa7\0".as_bytes());
///
/// let ascii = c_str!("so \"cool\"");
- /// let s = CString::try_from_fmt(fmt!("{}", ascii))?;
+ /// let s = CString::try_from_fmt(fmt!("{ascii}"))?;
/// assert_eq!(s.as_bytes_with_nul(), "so \"cool\"\0".as_bytes());
/// # Ok::<(), kernel::error::Error>(())
/// ```
@@ -459,16 +459,16 @@ impl fmt::Debug for CStr {
///
/// ```
/// # use kernel::c_str;
- /// # use kernel::fmt;
+ /// # use kernel::prelude::fmt;
/// # use kernel::str::CStr;
/// # use kernel::str::CString;
/// let penguin = c_str!("🐧");
- /// let s = CString::try_from_fmt(fmt!("{:?}", penguin))?;
+ /// let s = CString::try_from_fmt(fmt!("{penguin:?}"))?;
/// assert_eq!(s.as_bytes_with_nul(), "\"\\xf0\\x9f\\x90\\xa7\"\0".as_bytes());
///
/// // Embedded double quotes are escaped.
/// let ascii = c_str!("so \"cool\"");
- /// let s = CString::try_from_fmt(fmt!("{:?}", ascii))?;
+ /// let s = CString::try_from_fmt(fmt!("{ascii:?}"))?;
/// assert_eq!(s.as_bytes_with_nul(), "\"so \\\"cool\\\"\"\0".as_bytes());
/// # Ok::<(), kernel::error::Error>(())
/// ```
@@ -578,7 +578,7 @@ mod tests {
macro_rules! format {
($($f:tt)*) => ({
- CString::try_from_fmt(::kernel::fmt!($($f)*))?.to_str()?
+ CString::try_from_fmt(fmt!($($f)*))?.to_str()?
})
}
@@ -840,7 +840,7 @@ fn write_str(&mut self, s: &str) -> fmt::Result {
/// # Examples
///
/// ```
-/// use kernel::{str::CString, fmt};
+/// use kernel::{str::CString, prelude::fmt};
///
/// let s = CString::try_from_fmt(fmt!("{}{}{}", "abc", 10, 20))?;
/// assert_eq!(s.as_bytes_with_nul(), "abc1020\0".as_bytes());
@@ -930,9 +930,3 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
fmt::Debug::fmt(&**self, f)
}
}
-
-/// A convenience alias for [`core::format_args`].
-#[macro_export]
-macro_rules! fmt {
- ($($f:tt)*) => ( ::core::format_args!($($f)*) )
-}
--
2.50.0
On 04-07-25, 16:14, Tamir Duberstein wrote: > Rather than export a macro that delegates to `core::format_args`, simply > re-export `core::format_args` as `fmt` from the prelude. This exposes > clippy warnings which were previously obscured by this macro, such as: > > warning: variables can be used directly in the `format!` string > --> ../drivers/cpufreq/rcpufreq_dt.rs:21:43 > | > 21 | let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?; > | ^^^^^^^^^^^^^^^^^^^^^^^ > | > = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args > = note: `-W clippy::uninlined-format-args` implied by `-W clippy::all` > = help: to override `-W clippy::all` add `#[allow(clippy::uninlined_format_args)]` > help: change this to > | > 21 - let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?; > 21 + let prop_name = CString::try_from_fmt(fmt!("{name}-supply")).ok()?; > | > > Thus fix them in the same commit. This could possibly be fixed in two > stages, but the diff is small enough (outside of kernel/str.rs) that I > hope it can taken in a single commit. > > Signed-off-by: Tamir Duberstein <tamird@gmail.com> > --- > drivers/cpufreq/rcpufreq_dt.rs | 3 +-- > rust/kernel/opp.rs | 2 +- Acked-by: Viresh Kumar <viresh.kumar@linaro.org> -- viresh
On Mon, Jul 21, 2025 at 9:37 AM Viresh Kumar <viresh.kumar@linaro.org> wrote: > > Acked-by: Viresh Kumar <viresh.kumar@linaro.org> Thanks Viresh -- I will add this one if I rebase, since Stephen already solved a conflict with it (I should have pinged earlier I guess, sorry; I thought you guys didn't Ack so far since it was trivial, but thanks to you both for them). Cheers, Miguel
On Fri, Jul 4, 2025 at 4:16 PM Tamir Duberstein <tamird@gmail.com> wrote: > > Rather than export a macro that delegates to `core::format_args`, simply > re-export `core::format_args` as `fmt` from the prelude. This exposes > clippy warnings which were previously obscured by this macro, such as: > > warning: variables can be used directly in the `format!` string > --> ../drivers/cpufreq/rcpufreq_dt.rs:21:43 > | > 21 | let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?; > | ^^^^^^^^^^^^^^^^^^^^^^^ > | > = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args > = note: `-W clippy::uninlined-format-args` implied by `-W clippy::all` > = help: to override `-W clippy::all` add `#[allow(clippy::uninlined_format_args)]` > help: change this to > | > 21 - let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?; > 21 + let prop_name = CString::try_from_fmt(fmt!("{name}-supply")).ok()?; > | > > Thus fix them in the same commit. This could possibly be fixed in two > stages, but the diff is small enough (outside of kernel/str.rs) that I > hope it can taken in a single commit. Just noticed a tiny typo here: it should say "can *be* taken". Miguel, if you can fix that on apply, please do - but if not, no worries.
On Mon, Jul 21, 2025 at 1:04 AM Tamir Duberstein <tamird@gmail.com> wrote: > > Just noticed a tiny typo here: it should say "can *be* taken". > > Miguel, if you can fix that on apply, please do - but if not, no worries. Done! (We could also have removed that sentence too, since it sounds a bit like something one would write after the `---` line). Cheers, Miguel
On Sun, Jul 20, 2025 at 7:17 PM Miguel Ojeda <miguel.ojeda.sandonis@gmail.com> wrote: > > On Mon, Jul 21, 2025 at 1:04 AM Tamir Duberstein <tamird@gmail.com> wrote: > > > > Just noticed a tiny typo here: it should say "can *be* taken". > > > > Miguel, if you can fix that on apply, please do - but if not, no worries. > > Done! (We could also have removed that sentence too, since it sounds a > bit like something one would write after the `---` line). Yeah, agreed. Removing it would be fine by me as well!
On Fri, Jul 4, 2025 at 10:16 PM Tamir Duberstein <tamird@gmail.com> wrote: > > drivers/cpufreq/rcpufreq_dt.rs | 3 +-- > drivers/gpu/nova-core/firmware.rs | 5 +++-- > rust/kernel/opp.rs | 2 +- Danilo, Viresh: I assume you are OK with this, but let me know otherwise, thanks! Cheers, Miguel
On Sun Jul 20, 2025 at 11:24 PM CEST, Miguel Ojeda wrote: > On Fri, Jul 4, 2025 at 10:16 PM Tamir Duberstein <tamird@gmail.com> wrote: >> >> drivers/cpufreq/rcpufreq_dt.rs | 3 +-- >> drivers/gpu/nova-core/firmware.rs | 5 +++-- >> rust/kernel/opp.rs | 2 +- > > Danilo, Viresh: I assume you are OK with this, but let me know > otherwise, thanks! Sure, feel free to add Acked-by: Danilo Krummrich <dakr@kernel.org>
On Fri Jul 4, 2025 at 10:14 PM CEST, Tamir Duberstein wrote: > Rather than export a macro that delegates to `core::format_args`, simply > re-export `core::format_args` as `fmt` from the prelude. This exposes > clippy warnings which were previously obscured by this macro, such as: > > warning: variables can be used directly in the `format!` string > --> ../drivers/cpufreq/rcpufreq_dt.rs:21:43 > | > 21 | let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?; > | ^^^^^^^^^^^^^^^^^^^^^^^ > | > = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args > = note: `-W clippy::uninlined-format-args` implied by `-W clippy::all` > = help: to override `-W clippy::all` add `#[allow(clippy::uninlined_format_args)]` > help: change this to > | > 21 - let prop_name = CString::try_from_fmt(fmt!("{}-supply", name)).ok()?; > 21 + let prop_name = CString::try_from_fmt(fmt!("{name}-supply")).ok()?; > | > > Thus fix them in the same commit. This could possibly be fixed in two > stages, but the diff is small enough (outside of kernel/str.rs) that I > hope it can taken in a single commit. > > Signed-off-by: Tamir Duberstein <tamird@gmail.com> Reviewed-by: Benno Lossin <lossin@kernel.org> --- Cheers, Benno > --- > drivers/cpufreq/rcpufreq_dt.rs | 3 +-- > drivers/gpu/nova-core/firmware.rs | 5 +++-- > rust/kernel/opp.rs | 2 +- > rust/kernel/prelude.rs | 2 +- > rust/kernel/str.rs | 34 ++++++++++++++-------------------- > 5 files changed, 20 insertions(+), 26 deletions(-)
© 2016 - 2025 Red Hat, Inc.