Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

rust: debugfs: use `kernel::fmt`

Reduce coupling to implementation details of the formatting machinery by
avoiding direct use for `core`'s formatting traits and macros.

This backslid in commit 40ecc49466c8 ("rust: debugfs: Add support for
callback-based files") and commit 5e40b591cb46 ("rust: debugfs: Add
support for read-only files").

Acked-by: Danilo Krummrich <dakr@kernel.org>
Reviewed-by: Matthew Maurer <mmaurer@google.com>
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
Link: https://patch.msgid.link/20251018-cstr-core-v18-7-9378a54385f8@gmail.com
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>

authored by

Tamir Duberstein and committed by
Miguel Ojeda
3f0dd5fa b0af4f91

+12 -13
+1 -1
rust/kernel/debugfs.rs
··· 8 8 // When DebugFS is disabled, many parameters are dead. Linting for this isn't helpful. 9 9 #![cfg_attr(not(CONFIG_DEBUG_FS), allow(unused_variables))] 10 10 11 + use crate::fmt; 11 12 use crate::prelude::*; 12 13 use crate::str::CStr; 13 14 #[cfg(CONFIG_DEBUG_FS)] 14 15 use crate::sync::Arc; 15 16 use crate::uaccess::UserSliceReader; 16 - use core::fmt; 17 17 use core::marker::PhantomData; 18 18 use core::marker::PhantomPinned; 19 19 #[cfg(CONFIG_DEBUG_FS)]
+3 -4
rust/kernel/debugfs/callback_adapters.rs
··· 5 5 //! than a trait implementation. If provided, it will override the trait implementation. 6 6 7 7 use super::{Reader, Writer}; 8 + use crate::fmt; 8 9 use crate::prelude::*; 9 10 use crate::uaccess::UserSliceReader; 10 - use core::fmt; 11 - use core::fmt::Formatter; 12 11 use core::marker::PhantomData; 13 12 use core::ops::Deref; 14 13 ··· 75 76 76 77 impl<D, F> Writer for FormatAdapter<D, F> 77 78 where 78 - F: Fn(&D, &mut Formatter<'_>) -> fmt::Result + 'static, 79 + F: Fn(&D, &mut fmt::Formatter<'_>) -> fmt::Result + 'static, 79 80 { 80 - fn write(&self, fmt: &mut Formatter<'_>) -> fmt::Result { 81 + fn write(&self, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { 81 82 // SAFETY: FormatAdapter<_, F> can only be constructed if F is inhabited 82 83 let f: &F = unsafe { materialize_zst() }; 83 84 f(&self.inner, fmt)
+3 -3
rust/kernel/debugfs/file_ops.rs
··· 3 3 4 4 use super::{Reader, Writer}; 5 5 use crate::debugfs::callback_adapters::Adapter; 6 + use crate::fmt; 6 7 use crate::prelude::*; 7 8 use crate::seq_file::SeqFile; 8 9 use crate::seq_print; 9 10 use crate::uaccess::UserSlice; 10 - use core::fmt::{Display, Formatter, Result}; 11 11 use core::marker::PhantomData; 12 12 13 13 #[cfg(CONFIG_DEBUG_FS)] ··· 65 65 66 66 struct WriterAdapter<T>(T); 67 67 68 - impl<'a, T: Writer> Display for WriterAdapter<&'a T> { 69 - fn fmt(&self, f: &mut Formatter<'_>) -> Result { 68 + impl<'a, T: Writer> fmt::Display for WriterAdapter<&'a T> { 69 + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 70 70 self.0.write(f) 71 71 } 72 72 }
+5 -5
rust/kernel/debugfs/traits.rs
··· 3 3 4 4 //! Traits for rendering or updating values exported to DebugFS. 5 5 6 + use crate::fmt; 6 7 use crate::prelude::*; 7 8 use crate::sync::Mutex; 8 9 use crate::uaccess::UserSliceReader; 9 - use core::fmt::{self, Debug, Formatter}; 10 10 use core::str::FromStr; 11 11 use core::sync::atomic::{ 12 12 AtomicI16, AtomicI32, AtomicI64, AtomicI8, AtomicIsize, AtomicU16, AtomicU32, AtomicU64, ··· 24 24 /// explicitly instead. 25 25 pub trait Writer { 26 26 /// Formats the value using the given formatter. 27 - fn write(&self, f: &mut Formatter<'_>) -> fmt::Result; 27 + fn write(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result; 28 28 } 29 29 30 30 impl<T: Writer> Writer for Mutex<T> { 31 - fn write(&self, f: &mut Formatter<'_>) -> fmt::Result { 31 + fn write(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 32 32 self.lock().write(f) 33 33 } 34 34 } 35 35 36 - impl<T: Debug> Writer for T { 37 - fn write(&self, f: &mut Formatter<'_>) -> fmt::Result { 36 + impl<T: fmt::Debug> Writer for T { 37 + fn write(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { 38 38 writeln!(f, "{self:?}") 39 39 } 40 40 }