This series depends on step 3[0] which depends on steps 2a[1] and 2b[2] which both depend on step 1[3].
This series also has a minor merge conflict with a small change[4] that was taken through driver-core-testing. This series is marked as depending on that change; as such it contains the post-conflict patch.
Subsystem maintainers: I would appreciate your `Acked-by`s so that this can be taken through Miguel's tree (where the previous series must go).
Link https://lore.kernel.org/all/20250710-cstr-core-v14-0-ca7e0ca82c82@gmail.com/ [0] Link: https://lore.kernel.org/all/20250709-core-cstr-fanout-1-v1-0-64308e7203fc@gm... [1] Link: https://lore.kernel.org/all/20250709-core-cstr-fanout-1-v1-0-fd793b3e58a2@gm... [2] Link: https://lore.kernel.org/all/20250704-core-cstr-prepare-v1-0-a91524037783@gma... [3] Link: https://lore.kernel.org/all/20250704-cstr-include-aux-v1-1-e1a404ae92ac@gmai... [4]
Signed-off-by: Tamir Duberstein tamird@gmail.com --- Changes in v2: - Rebase. - Add two patches to address new code. - Drop incorrectly applied Acked-by tags from Danilo. - Link to v1: https://lore.kernel.org/r/20250710-core-cstr-cstrings-v1-0-027420ea799e@gmai...
--- Tamir Duberstein (19): drivers: net: replace `kernel::c_str!` with C-Strings gpu: nova-core: replace `kernel::c_str!` with C-Strings rust: auxiliary: replace `kernel::c_str!` with C-Strings rust: clk: replace `kernel::c_str!` with C-Strings rust: configfs: replace `kernel::c_str!` with C-Strings rust: cpufreq: replace `kernel::c_str!` with C-Strings rust: device: replace `kernel::c_str!` with C-Strings rust: firmware: replace `kernel::c_str!` with C-Strings rust: kunit: replace `kernel::c_str!` with C-Strings rust: macros: replace `kernel::c_str!` with C-Strings rust: miscdevice: replace `kernel::c_str!` with C-Strings rust: net: replace `kernel::c_str!` with C-Strings rust: pci: replace `kernel::c_str!` with C-Strings rust: platform: replace `kernel::c_str!` with C-Strings rust: seq_file: replace `kernel::c_str!` with C-Strings rust: str: replace `kernel::c_str!` with C-Strings rust: sync: replace `kernel::c_str!` with C-Strings rust: io: replace `kernel::c_str!` with C-Strings rust: regulator: replace `kernel::c_str!` with C-Strings
drivers/block/rnull.rs | 2 +- drivers/cpufreq/rcpufreq_dt.rs | 5 ++--- drivers/gpu/drm/nova/driver.rs | 10 +++++----- drivers/gpu/nova-core/driver.rs | 6 +++--- drivers/net/phy/ax88796b_rust.rs | 7 +++---- drivers/net/phy/qt2025.rs | 5 ++--- rust/kernel/clk.rs | 6 ++---- rust/kernel/configfs.rs | 9 +++++---- rust/kernel/cpufreq.rs | 3 +-- rust/kernel/device.rs | 4 +--- rust/kernel/device/property.rs | 6 +++--- rust/kernel/firmware.rs | 6 +++--- rust/kernel/io/mem.rs | 7 +++---- rust/kernel/kunit.rs | 11 ++++------- rust/kernel/net/phy.rs | 6 ++---- rust/kernel/platform.rs | 6 +++--- rust/kernel/regulator.rs | 9 +++------ rust/kernel/seq_file.rs | 4 ++-- rust/kernel/str.rs | 5 ++--- rust/kernel/sync.rs | 5 ++--- rust/kernel/sync/completion.rs | 2 +- rust/kernel/workqueue.rs | 8 ++++---- rust/macros/kunit.rs | 10 +++++----- rust/macros/module.rs | 2 +- samples/rust/rust_configfs.rs | 5 ++--- samples/rust/rust_driver_auxiliary.rs | 4 ++-- samples/rust/rust_driver_faux.rs | 4 ++-- samples/rust/rust_driver_pci.rs | 4 ++-- samples/rust/rust_driver_platform.rs | 30 ++++++++++++++---------------- samples/rust/rust_misc_device.rs | 3 +-- scripts/rustdoc_test_gen.rs | 4 ++-- 31 files changed, 88 insertions(+), 110 deletions(-) --- base-commit: 8f5ae30d69d7543eee0d70083daf4de8fe15d585 change-id: 20250710-core-cstr-cstrings-1faaa632f0fd prerequisite-message-id: 20250813-core-cstr-fanout-1-v3-0-545c14bc44ff@gmail.com prerequisite-patch-id: 0ccc3545ff9bf22a67b79a944705cef2fb9c2bbf prerequisite-patch-id: b1866166714606d5c11a4d7506abe4c2f86dac8d prerequisite-patch-id: b575ae9ef33020b691c8c5a17bd1985676519e14 prerequisite-patch-id: 8fee5e2daf0749362331dad4fc63d907a01b14e9 prerequisite-patch-id: 366ef1f93fb40b1d039768f2041ff79995e7e228 prerequisite-patch-id: 1d350291f9292f910081856d8f7d5e4d9545cfd1 prerequisite-patch-id: 9a6a60bd2b209126de64c16a77a3a1d229dd898c prerequisite-patch-id: 08ae5855768ec3b4c68272b86d2a0e0667c9aa47 prerequisite-patch-id: 801be981c2346617fa9412498930b68dc784693b prerequisite-patch-id: f0dbf0a55a27fe8e199e242d1f79ea800d1ddb66 prerequisite-patch-id: c0b4abb4d44f7e63d002d0bfe5239296930c183e prerequisite-message-id: 20250813-core-cstr-fanout-1-v3-0-a15eca059c51@gmail.com prerequisite-patch-id: 6711f2a2f25c12784057aa725a9482feef6bb6f0 prerequisite-patch-id: 3b5144133c0e239e0a258c9aa4da0df2dd464e66 prerequisite-patch-id: 589a352ba7f7c9aefefd84dfd3b6b20e290b0d14 prerequisite-patch-id: 2a4b0b9170e25637b9eba0e516863bdcdb4149a8 prerequisite-patch-id: 3d89601bba1fb01d190b0ba415b28ad9cbf1e209 prerequisite-patch-id: 10923aebf24011b727f60496c0f9e0ad57e0a967 prerequisite-patch-id: 9a7e8ba460358985147efd347658be31fbc78ba2 prerequisite-patch-id: f79b8755f3d75effc581d09eafe5725043516aad prerequisite-patch-id: d598958c2d64dcb56a5cd64b088594be51b1d752 prerequisite-change-id: 20250201-cstr-core-d4b9b69120cf:v15 prerequisite-patch-id: 6711f2a2f25c12784057aa725a9482feef6bb6f0 prerequisite-patch-id: 3b5144133c0e239e0a258c9aa4da0df2dd464e66 prerequisite-patch-id: 0ccc3545ff9bf22a67b79a944705cef2fb9c2bbf prerequisite-patch-id: b1866166714606d5c11a4d7506abe4c2f86dac8d prerequisite-patch-id: 589a352ba7f7c9aefefd84dfd3b6b20e290b0d14 prerequisite-patch-id: 2a4b0b9170e25637b9eba0e516863bdcdb4149a8 prerequisite-patch-id: 3d89601bba1fb01d190b0ba415b28ad9cbf1e209 prerequisite-patch-id: 10923aebf24011b727f60496c0f9e0ad57e0a967 prerequisite-patch-id: 9a7e8ba460358985147efd347658be31fbc78ba2 prerequisite-patch-id: f79b8755f3d75effc581d09eafe5725043516aad prerequisite-patch-id: d598958c2d64dcb56a5cd64b088594be51b1d752 prerequisite-patch-id: b575ae9ef33020b691c8c5a17bd1985676519e14 prerequisite-patch-id: 8fee5e2daf0749362331dad4fc63d907a01b14e9 prerequisite-patch-id: 366ef1f93fb40b1d039768f2041ff79995e7e228 prerequisite-patch-id: 1d350291f9292f910081856d8f7d5e4d9545cfd1 prerequisite-patch-id: 9a6a60bd2b209126de64c16a77a3a1d229dd898c prerequisite-patch-id: 08ae5855768ec3b4c68272b86d2a0e0667c9aa47 prerequisite-patch-id: 801be981c2346617fa9412498930b68dc784693b prerequisite-patch-id: f0dbf0a55a27fe8e199e242d1f79ea800d1ddb66 prerequisite-patch-id: c0b4abb4d44f7e63d002d0bfe5239296930c183e prerequisite-patch-id: 9c0a6624ed7b7e1d0373985c5c084a844e7c49ce prerequisite-patch-id: e0ca756f740ab0ce7478bbf6510948ba89529a2f prerequisite-patch-id: 6d8dbdf864f79fc0c2820e702a7cb87753649ca0 prerequisite-patch-id: 7d4d1d036043a85dcbaf0d09ea85768120efe094
Best regards, -- Tamir Duberstein tamird@gmail.com
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- drivers/net/phy/ax88796b_rust.rs | 7 +++---- drivers/net/phy/qt2025.rs | 5 ++--- 2 files changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/phy/ax88796b_rust.rs b/drivers/net/phy/ax88796b_rust.rs index bc73ebccc2aa..2d24628a4e58 100644 --- a/drivers/net/phy/ax88796b_rust.rs +++ b/drivers/net/phy/ax88796b_rust.rs @@ -5,7 +5,6 @@ //! //! C version of this driver: [`drivers/net/phy/ax88796b.c`](./ax88796b.c) use kernel::{ - c_str, net::phy::{self, reg::C22, DeviceId, Driver}, prelude::*, uapi, @@ -41,7 +40,7 @@ fn asix_soft_reset(dev: &mut phy::Device) -> Result { #[vtable] impl Driver for PhyAX88772A { const FLAGS: u32 = phy::flags::IS_INTERNAL; - const NAME: &'static CStr = c_str!("Asix Electronics AX88772A"); + const NAME: &'static CStr = c"Asix Electronics AX88772A"; const PHY_DEVICE_ID: DeviceId = DeviceId::new_with_exact_mask(0x003b1861);
// AX88772A is not working properly with some old switches (NETGEAR EN 108TP): @@ -105,7 +104,7 @@ fn link_change_notify(dev: &mut phy::Device) { #[vtable] impl Driver for PhyAX88772C { const FLAGS: u32 = phy::flags::IS_INTERNAL; - const NAME: &'static CStr = c_str!("Asix Electronics AX88772C"); + const NAME: &'static CStr = c"Asix Electronics AX88772C"; const PHY_DEVICE_ID: DeviceId = DeviceId::new_with_exact_mask(0x003b1881);
fn suspend(dev: &mut phy::Device) -> Result { @@ -125,7 +124,7 @@ fn soft_reset(dev: &mut phy::Device) -> Result {
#[vtable] impl Driver for PhyAX88796B { - const NAME: &'static CStr = c_str!("Asix Electronics AX88796B"); + const NAME: &'static CStr = c"Asix Electronics AX88796B"; const PHY_DEVICE_ID: DeviceId = DeviceId::new_with_model_mask(0x003b1841);
fn soft_reset(dev: &mut phy::Device) -> Result { diff --git a/drivers/net/phy/qt2025.rs b/drivers/net/phy/qt2025.rs index 0b9400dcb4c1..9ccc75f70219 100644 --- a/drivers/net/phy/qt2025.rs +++ b/drivers/net/phy/qt2025.rs @@ -9,7 +9,6 @@ //! //! The QT2025 PHY integrates an Intel 8051 micro-controller.
-use kernel::c_str; use kernel::error::code; use kernel::firmware::Firmware; use kernel::net::phy::{ @@ -36,7 +35,7 @@
#[vtable] impl Driver for PhyQT2025 { - const NAME: &'static CStr = c_str!("QT2025 10Gpbs SFP+"); + const NAME: &'static CStr = c"QT2025 10Gpbs SFP+"; const PHY_DEVICE_ID: phy::DeviceId = phy::DeviceId::new_with_exact_mask(0x0043a400);
fn probe(dev: &mut phy::Device) -> Result<()> { @@ -69,7 +68,7 @@ fn probe(dev: &mut phy::Device) -> Result<()> { // The micro-controller will start running from the boot ROM. dev.write(C45::new(Mmd::PCS, 0xe854), 0x00c0)?;
- let fw = Firmware::request(c_str!("qt2025-2.0.3.3.fw"), dev.as_ref())?; + let fw = Firmware::request(c"qt2025-2.0.3.3.fw", dev.as_ref())?; if fw.data().len() > SZ_16K + SZ_8K { return Err(code::EFBIG); }
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- drivers/gpu/drm/nova/driver.rs | 10 +++++----- drivers/gpu/nova-core/driver.rs | 6 +++--- 2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/nova/driver.rs b/drivers/gpu/drm/nova/driver.rs index b28b2e05cc15..87480ee8dbae 100644 --- a/drivers/gpu/drm/nova/driver.rs +++ b/drivers/gpu/drm/nova/driver.rs @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0
-use kernel::{auxiliary, c_str, device::Core, drm, drm::gem, drm::ioctl, prelude::*, types::ARef}; +use kernel::{auxiliary, device::Core, drm, drm::gem, drm::ioctl, prelude::*, types::ARef};
use crate::file::File; use crate::gem::NovaObject; @@ -22,12 +22,12 @@ pub(crate) struct NovaData { major: 0, minor: 0, patchlevel: 0, - name: c_str!("nova"), - desc: c_str!("Nvidia Graphics"), + name: c"nova", + desc: c"Nvidia Graphics", };
-const NOVA_CORE_MODULE_NAME: &CStr = c_str!("NovaCore"); -const AUXILIARY_NAME: &CStr = c_str!("nova-drm"); +const NOVA_CORE_MODULE_NAME: &CStr = c"NovaCore"; +const AUXILIARY_NAME: &CStr = c"nova-drm";
kernel::auxiliary_device_table!( AUX_TABLE, diff --git a/drivers/gpu/nova-core/driver.rs b/drivers/gpu/nova-core/driver.rs index 274989ea1fb4..2f1a37be3107 100644 --- a/drivers/gpu/nova-core/driver.rs +++ b/drivers/gpu/nova-core/driver.rs @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0
-use kernel::{auxiliary, bindings, c_str, device::Core, pci, prelude::*, sizes::SZ_16M, sync::Arc}; +use kernel::{auxiliary, bindings, device::Core, pci, prelude::*, sizes::SZ_16M, sync::Arc};
use crate::gpu::Gpu;
@@ -35,7 +35,7 @@ fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> Result<Pin<KBox<Self pdev.set_master();
let bar = Arc::pin_init( - pdev.iomap_region_sized::<BAR0_SIZE>(0, c_str!("nova-core/bar0")), + pdev.iomap_region_sized::<BAR0_SIZE>(0, c"nova-core/bar0"), GFP_KERNEL, )?;
@@ -44,7 +44,7 @@ fn probe(pdev: &pci::Device<Core>, _info: &Self::IdInfo) -> Result<Pin<KBox<Self gpu <- Gpu::new(pdev, bar)?, _reg: auxiliary::Registration::new( pdev.as_ref(), - c_str!("nova-drm"), + c"nova-drm", 0, // TODO[XARR]: Once it lands, use XArray; for now we don't use the ID. crate::MODULE_NAME )?,
On Thu Aug 14, 2025 at 12:59 AM JST, Tamir Duberstein wrote:
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com
Reviewed-by: Alexandre Courbot acourbot@nvidia.com
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- samples/rust/rust_driver_auxiliary.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/samples/rust/rust_driver_auxiliary.rs b/samples/rust/rust_driver_auxiliary.rs index f2a820683fc3..7c916eb11b64 100644 --- a/samples/rust/rust_driver_auxiliary.rs +++ b/samples/rust/rust_driver_auxiliary.rs @@ -5,13 +5,13 @@ //! To make this driver probe, QEMU must be run with `-device pci-testdev`.
use kernel::{ - auxiliary, bindings, c_str, device::Core, driver, error::Error, pci, prelude::*, InPlaceModule, + auxiliary, bindings, device::Core, driver, error::Error, pci, prelude::*, InPlaceModule, };
use pin_init::PinInit;
const MODULE_NAME: &CStr = <LocalModule as kernel::ModuleMetadata>::NAME; -const AUXILIARY_NAME: &CStr = c_str!("auxiliary"); +const AUXILIARY_NAME: &CStr = c"auxiliary";
struct AuxiliaryDriver;
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com Acked-by: Stephen Boyd sboyd@kernel.org --- rust/kernel/clk.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/rust/kernel/clk.rs b/rust/kernel/clk.rs index 1e6c8c42fb3a..09469277e95b 100644 --- a/rust/kernel/clk.rs +++ b/rust/kernel/clk.rs @@ -104,13 +104,12 @@ mod common_clk { /// The following example demonstrates how to obtain and configure a clock for a device. /// /// ``` - /// use kernel::c_str; /// use kernel::clk::{Clk, Hertz}; /// use kernel::device::Device; /// use kernel::error::Result; /// /// fn configure_clk(dev: &Device) -> Result { - /// let clk = Clk::get(dev, Some(c_str!("apb_clk")))?; + /// let clk = Clk::get(dev, Some(c"apb_clk"))?; /// /// clk.prepare_enable()?; /// @@ -272,13 +271,12 @@ fn drop(&mut self) { /// device. The code functions correctly whether or not the clock is available. /// /// ``` - /// use kernel::c_str; /// use kernel::clk::{OptionalClk, Hertz}; /// use kernel::device::Device; /// use kernel::error::Result; /// /// fn configure_clk(dev: &Device) -> Result { - /// let clk = OptionalClk::get(dev, Some(c_str!("apb_clk")))?; + /// let clk = OptionalClk::get(dev, Some(c"apb_clk"))?; /// /// clk.prepare_enable()?; ///
On 13-08-25, 11:59, Tamir Duberstein wrote:
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com Acked-by: Stephen Boyd sboyd@kernel.org
rust/kernel/clk.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
Acked-by: Viresh Kumar viresh.kumar@linaro.org
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com Acked-by: Andreas Hindborg a.hindborg@kernel.org --- rust/kernel/configfs.rs | 9 +++++---- samples/rust/rust_configfs.rs | 5 ++--- 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/rust/kernel/configfs.rs b/rust/kernel/configfs.rs index 9fb5ef825e41..69bb1fb53543 100644 --- a/rust/kernel/configfs.rs +++ b/rust/kernel/configfs.rs @@ -21,7 +21,6 @@ //! //! ```ignore //! use kernel::alloc::flags; -//! use kernel::c_str; //! use kernel::configfs_attrs; //! use kernel::configfs; //! use kernel::new_mutex; @@ -50,7 +49,7 @@ //! //! try_pin_init!(Self { //! config <- configfs::Subsystem::new( -//! c_str!("rust_configfs"), item_type, Configuration::new() +//! c"rust_configfs", item_type, Configuration::new() //! ), //! }) //! } @@ -66,7 +65,7 @@ //! impl Configuration { //! fn new() -> impl PinInit<Self, Error> { //! try_pin_init!(Self { -//! message: c_str!("Hello World\n"), +//! message: c"Hello World\n", //! bar <- new_mutex!((KBox::new([0; PAGE_SIZE], flags::GFP_KERNEL)?, 0)), //! }) //! } @@ -1000,7 +999,9 @@ macro_rules! configfs_attrs { static [< $data:upper _ $name:upper _ATTR >]: $crate::configfs::Attribute<$attr, $data, $data> = unsafe { - $crate::configfs::Attribute::new(c_str!(::core::stringify!($name))) + $crate::configfs::Attribute::new( + $crate::c_str!(::core::stringify!($name)), + ) }; )*
diff --git a/samples/rust/rust_configfs.rs b/samples/rust/rust_configfs.rs index 5005453f874d..ea84c23b784b 100644 --- a/samples/rust/rust_configfs.rs +++ b/samples/rust/rust_configfs.rs @@ -3,7 +3,6 @@ //! Rust configfs sample.
use kernel::alloc::flags; -use kernel::c_str; use kernel::configfs; use kernel::configfs_attrs; use kernel::new_mutex; @@ -35,7 +34,7 @@ struct Configuration { impl Configuration { fn new() -> impl PinInit<Self, Error> { try_pin_init!(Self { - message: c_str!("Hello World\n"), + message: c"Hello World\n", bar <- new_mutex!((KBox::new([0; PAGE_SIZE], flags::GFP_KERNEL)?, 0)), }) } @@ -61,7 +60,7 @@ fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error> {
try_pin_init!(Self { config <- configfs::Subsystem::new( - c_str!("rust_configfs"), item_type, Configuration::new() + c"rust_configfs", item_type, Configuration::new() ), }) }
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- drivers/cpufreq/rcpufreq_dt.rs | 5 ++--- rust/kernel/cpufreq.rs | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/cpufreq/rcpufreq_dt.rs b/drivers/cpufreq/rcpufreq_dt.rs index 7e1fbf9a091f..1120a8f5edd7 100644 --- a/drivers/cpufreq/rcpufreq_dt.rs +++ b/drivers/cpufreq/rcpufreq_dt.rs @@ -3,7 +3,6 @@ //! Rust based implementation of the cpufreq-dt driver.
use kernel::{ - c_str, clk::Clk, cpu, cpufreq, cpumask::CpumaskVar, @@ -56,7 +55,7 @@ impl opp::ConfigOps for CPUFreqDTDriver {}
#[vtable] impl cpufreq::Driver for CPUFreqDTDriver { - const NAME: &'static CStr = c_str!("cpufreq-dt"); + const NAME: &'static CStr = c"cpufreq-dt"; const FLAGS: u16 = cpufreq::flags::NEED_INITIAL_FREQ_CHECK | cpufreq::flags::IS_COOLING_DEV; const BOOST_ENABLED: bool = true;
@@ -201,7 +200,7 @@ fn register_em(policy: &mut cpufreq::Policy) { OF_TABLE, MODULE_OF_TABLE, <CPUFreqDTDriver as platform::Driver>::IdInfo, - [(of::DeviceId::new(c_str!("operating-points-v2")), ())] + [(of::DeviceId::new(c"operating-points-v2"), ())] );
impl platform::Driver for CPUFreqDTDriver { diff --git a/rust/kernel/cpufreq.rs b/rust/kernel/cpufreq.rs index 2bdf9ae00ffe..c59b84820684 100644 --- a/rust/kernel/cpufreq.rs +++ b/rust/kernel/cpufreq.rs @@ -841,7 +841,6 @@ fn register_em(_policy: &mut Policy) { /// ``` /// use kernel::{ /// cpufreq, -/// c_str, /// device::{Core, Device}, /// macros::vtable, /// of, platform, @@ -854,7 +853,7 @@ fn register_em(_policy: &mut Policy) { /// /// #[vtable] /// impl cpufreq::Driver for SampleDriver { -/// const NAME: &'static CStr = c_str!("cpufreq-sample"); +/// const NAME: &'static CStr = c"cpufreq-sample"; /// const FLAGS: u16 = cpufreq::flags::NEED_INITIAL_FREQ_CHECK | cpufreq::flags::IS_COOLING_DEV; /// const BOOST_ENABLED: bool = true; ///
On 13-08-25, 11:59, Tamir Duberstein wrote:
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com
drivers/cpufreq/rcpufreq_dt.rs | 5 ++--- rust/kernel/cpufreq.rs | 3 +-- 2 files changed, 3 insertions(+), 5 deletions(-)
Acked-by: Viresh Kumar viresh.kumar@linaro.org
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/kernel/device.rs | 4 +--- rust/kernel/device/property.rs | 6 +++--- 2 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/rust/kernel/device.rs b/rust/kernel/device.rs index 449776474044..ba83cf3624fd 100644 --- a/rust/kernel/device.rs +++ b/rust/kernel/device.rs @@ -10,8 +10,6 @@ }; use core::{marker::PhantomData, ptr};
-#[cfg(CONFIG_PRINTK)] -use crate::c_str; use crate::str::CStrExt as _;
pub mod property; @@ -265,7 +263,7 @@ unsafe fn printk(&self, klevel: &[u8], msg: fmt::Arguments<'_>) { bindings::_dev_printk( klevel.as_ptr().cast::crate::ffi::c_char(), self.as_raw(), - c_str!("%pA").as_char_ptr(), + c"%pA".as_char_ptr(), core::ptr::from_ref(&msg).cast::crate::ffi::c_void(), ) }; diff --git a/rust/kernel/device/property.rs b/rust/kernel/device/property.rs index 3a332a8c53a9..3eb3f36d66d0 100644 --- a/rust/kernel/device/property.rs +++ b/rust/kernel/device/property.rs @@ -178,11 +178,11 @@ pub fn property_count_elem<T: PropertyInt>(&self, name: &CStr) -> Result<usize> /// # Examples /// /// ``` - /// # use kernel::{c_str, device::{Device, property::FwNode}, str::CString}; + /// # use kernel::{device::{Device, property::FwNode}, str::CString}; /// fn examples(dev: &Device) -> Result { /// let fwnode = dev.fwnode().ok_or(ENOENT)?; - /// let b: u32 = fwnode.property_read(c_str!("some-number")).required_by(dev)?; - /// if let Some(s) = fwnode.property_read::<CString>(c_str!("some-str")).optional() { + /// let b: u32 = fwnode.property_read(c"some-number").required_by(dev)?; + /// if let Some(s) = fwnode.property_read::<CString>(c"some-str").optional() { /// // ... /// } /// Ok(())
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/kernel/firmware.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/rust/kernel/firmware.rs b/rust/kernel/firmware.rs index 376e7e77453f..71168d8004e2 100644 --- a/rust/kernel/firmware.rs +++ b/rust/kernel/firmware.rs @@ -51,13 +51,13 @@ fn request_nowarn() -> Self { /// # Examples /// /// ```no_run -/// # use kernel::{c_str, device::Device, firmware::Firmware}; +/// # use kernel::{device::Device, firmware::Firmware}; /// /// # fn no_run() -> Result<(), Error> { /// # // SAFETY: *NOT* safe, just for the example to get an `ARef<Device>` instance /// # let dev = unsafe { Device::get_device(core::ptr::null_mut()) }; /// -/// let fw = Firmware::request(c_str!("path/to/firmware.bin"), &dev)?; +/// let fw = Firmware::request(c"path/to/firmware.bin", &dev)?; /// let blob = fw.data(); /// /// # Ok(()) @@ -204,7 +204,7 @@ macro_rules! module_firmware { ($($builder:tt)*) => { const _: () = { const __MODULE_FIRMWARE_PREFIX: &'static $crate::str::CStr = if cfg!(MODULE) { - $crate::c_str!("") + c"" } else { <LocalModule as $crate::ModuleMetadata>::NAME };
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/kernel/kunit.rs | 11 ++++------- rust/macros/kunit.rs | 10 +++++----- scripts/rustdoc_test_gen.rs | 4 ++-- 3 files changed, 11 insertions(+), 14 deletions(-)
diff --git a/rust/kernel/kunit.rs b/rust/kernel/kunit.rs index 3a43886cc14e..6223a5ac801c 100644 --- a/rust/kernel/kunit.rs +++ b/rust/kernel/kunit.rs @@ -9,9 +9,6 @@ use crate::fmt; use crate::prelude::*;
-#[cfg(CONFIG_PRINTK)] -use crate::c_str; - /// Prints a KUnit error-level message. /// /// Public but hidden since it should only be used from KUnit generated code. @@ -22,7 +19,7 @@ pub fn err(args: fmt::Arguments<'_>) { #[cfg(CONFIG_PRINTK)] unsafe { bindings::_printk( - c_str!("\x013%pA").as_char_ptr(), + c"\x013%pA".as_char_ptr(), core::ptr::from_ref(&args).cast::<c_void>(), ); } @@ -38,7 +35,7 @@ pub fn info(args: fmt::Arguments<'_>) { #[cfg(CONFIG_PRINTK)] unsafe { bindings::_printk( - c_str!("\x016%pA").as_char_ptr(), + c"\x016%pA".as_char_ptr(), core::ptr::from_ref(&args).cast::<c_void>(), ); } @@ -60,7 +57,7 @@ macro_rules! kunit_assert { break 'out; }
- static FILE: &'static $crate::str::CStr = $crate::c_str!($file); + static FILE: &'static $crate::str::CStr = $file; static LINE: i32 = ::core::line!() as i32 - $diff; static CONDITION: &'static $crate::str::CStr = $crate::c_str!(stringify!($condition));
@@ -249,7 +246,7 @@ pub const fn kunit_case_null() -> kernel::bindings::kunit_case { /// } /// /// static mut KUNIT_TEST_CASES: [kernel::bindings::kunit_case; 2] = [ -/// kernel::kunit::kunit_case(kernel::c_str!("name"), test_fn), +/// kernel::kunit::kunit_case(c"name", test_fn), /// kernel::kunit::kunit_case_null(), /// ]; /// kernel::kunit_unsafe_test_suite!(suite_name, KUNIT_TEST_CASES); diff --git a/rust/macros/kunit.rs b/rust/macros/kunit.rs index 81d18149a0cc..c64df1a01b9d 100644 --- a/rust/macros/kunit.rs +++ b/rust/macros/kunit.rs @@ -89,8 +89,8 @@ pub(crate) fn kunit_tests(attr: TokenStream, ts: TokenStream) -> TokenStream { // unsafe extern "C" fn kunit_rust_wrapper_bar(_test: *mut ::kernel::bindings::kunit) { bar(); } // // static mut TEST_CASES: [::kernel::bindings::kunit_case; 3] = [ - // ::kernel::kunit::kunit_case(::kernel::c_str!("foo"), kunit_rust_wrapper_foo), - // ::kernel::kunit::kunit_case(::kernel::c_str!("bar"), kunit_rust_wrapper_bar), + // ::kernel::kunit::kunit_case(c"foo", kunit_rust_wrapper_foo), + // ::kernel::kunit::kunit_case(c"bar", kunit_rust_wrapper_bar), // ::kernel::kunit::kunit_case_null(), // ]; // @@ -109,7 +109,7 @@ pub(crate) fn kunit_tests(attr: TokenStream, ts: TokenStream) -> TokenStream { writeln!(kunit_macros, "{kunit_wrapper}").unwrap(); writeln!( test_cases, - " ::kernel::kunit::kunit_case(::kernel::c_str!("{test}"), {kunit_wrapper_fn_name})," + " ::kernel::kunit::kunit_case(c"{test}", {kunit_wrapper_fn_name})," ) .unwrap(); writeln!( @@ -119,7 +119,7 @@ pub(crate) fn kunit_tests(attr: TokenStream, ts: TokenStream) -> TokenStream { #[allow(unused)] macro_rules! assert {{ ($cond:expr $(,)?) => {{{{ - kernel::kunit_assert!("{test}", "{path}", 0, $cond); + kernel::kunit_assert!("{test}", c"{path}", 0, $cond); }}}} }}
@@ -127,7 +127,7 @@ macro_rules! assert {{ #[allow(unused)] macro_rules! assert_eq {{ ($left:expr, $right:expr $(,)?) => {{{{ - kernel::kunit_assert_eq!("{test}", "{path}", 0, $left, $right); + kernel::kunit_assert_eq!("{test}", c"{path}", 0, $left, $right); }}}} }} "# diff --git a/scripts/rustdoc_test_gen.rs b/scripts/rustdoc_test_gen.rs index c8f9dc2ab976..b0b70a3d0f54 100644 --- a/scripts/rustdoc_test_gen.rs +++ b/scripts/rustdoc_test_gen.rs @@ -174,7 +174,7 @@ pub extern "C" fn {kunit_name}(__kunit_test: *mut ::kernel::bindings::kunit) {{ macro_rules! assert {{ ($cond:expr $(,)?) => {{{{ ::kernel::kunit_assert!( - "{kunit_name}", "{real_path}", __DOCTEST_ANCHOR - {line}, $cond + "{kunit_name}", c"{real_path}", __DOCTEST_ANCHOR - {line}, $cond ); }}}} }} @@ -184,7 +184,7 @@ macro_rules! assert {{ macro_rules! assert_eq {{ ($left:expr, $right:expr $(,)?) => {{{{ ::kernel::kunit_assert_eq!( - "{kunit_name}", "{real_path}", __DOCTEST_ANCHOR - {line}, $left, $right + "{kunit_name}", c"{real_path}", __DOCTEST_ANCHOR - {line}, $left, $right ); }}}} }}
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/macros/module.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rust/macros/module.rs b/rust/macros/module.rs index 5ee54a00c0b6..8cef6cc958b5 100644 --- a/rust/macros/module.rs +++ b/rust/macros/module.rs @@ -228,7 +228,7 @@ pub(crate) fn module(ts: TokenStream) -> TokenStream { type LocalModule = {type_};
impl ::kernel::ModuleMetadata for {type_} {{ - const NAME: &'static ::kernel::str::CStr = ::kernel::c_str!("{name}"); + const NAME: &'static ::kernel::str::CStr = c"{name}"; }}
// Double nested modules, since then nobody can access the public items inside.
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- samples/rust/rust_misc_device.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/samples/rust/rust_misc_device.rs b/samples/rust/rust_misc_device.rs index e7ab77448f75..60ab10b02574 100644 --- a/samples/rust/rust_misc_device.rs +++ b/samples/rust/rust_misc_device.rs @@ -98,7 +98,6 @@ use core::pin::Pin;
use kernel::{ - c_str, device::Device, fs::File, ioctl::{_IO, _IOC_SIZE, _IOR, _IOW}, @@ -133,7 +132,7 @@ fn init(_module: &'static ThisModule) -> impl PinInit<Self, Error> { pr_info!("Initialising Rust Misc Device Sample\n");
let options = MiscDeviceOptions { - name: c_str!("rust-misc-device"), + name: c"rust-misc-device", };
try_pin_init!(Self {
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/kernel/net/phy.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/rust/kernel/net/phy.rs b/rust/kernel/net/phy.rs index be1027b7961b..9aeb2bd16b58 100644 --- a/rust/kernel/net/phy.rs +++ b/rust/kernel/net/phy.rs @@ -780,7 +780,6 @@ const fn as_int(&self) -> u32 { /// /// ``` /// # mod module_phy_driver_sample { -/// use kernel::c_str; /// use kernel::net::phy::{self, DeviceId}; /// use kernel::prelude::*; /// @@ -799,7 +798,7 @@ const fn as_int(&self) -> u32 { /// /// #[vtable] /// impl phy::Driver for PhySample { -/// const NAME: &'static CStr = c_str!("PhySample"); +/// const NAME: &'static CStr = c"PhySample"; /// const PHY_DEVICE_ID: phy::DeviceId = phy::DeviceId::new_with_exact_mask(0x00000001); /// } /// # } @@ -808,7 +807,6 @@ const fn as_int(&self) -> u32 { /// This expands to the following code: /// /// ```ignore -/// use kernel::c_str; /// use kernel::net::phy::{self, DeviceId}; /// use kernel::prelude::*; /// @@ -828,7 +826,7 @@ const fn as_int(&self) -> u32 { /// /// #[vtable] /// impl phy::Driver for PhySample { -/// const NAME: &'static CStr = c_str!("PhySample"); +/// const NAME: &'static CStr = c"PhySample"; /// const PHY_DEVICE_ID: phy::DeviceId = phy::DeviceId::new_with_exact_mask(0x00000001); /// } ///
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- samples/rust/rust_driver_pci.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/samples/rust/rust_driver_pci.rs b/samples/rust/rust_driver_pci.rs index 606946ff4d7f..e0e9d9fda484 100644 --- a/samples/rust/rust_driver_pci.rs +++ b/samples/rust/rust_driver_pci.rs @@ -4,7 +4,7 @@ //! //! To make this driver probe, QEMU must be run with `-device pci-testdev`.
-use kernel::{bindings, c_str, device::Core, devres::Devres, pci, prelude::*, types::ARef}; +use kernel::{bindings, device::Core, devres::Devres, pci, prelude::*, types::ARef};
struct Regs;
@@ -79,7 +79,7 @@ fn probe(pdev: &pci::Device<Core>, info: &Self::IdInfo) -> Result<Pin<KBox<Self> let drvdata = KBox::pin_init( try_pin_init!(Self { pdev: pdev.into(), - bar <- pdev.iomap_region_sized::<{ Regs::END }>(0, c_str!("rust_driver_pci")), + bar <- pdev.iomap_region_sized::<{ Regs::END }>(0, c"rust_driver_pci"), index: *info, }), GFP_KERNEL,
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Acked-by: Danilo Krummrich dakr@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/kernel/platform.rs | 6 +++--- samples/rust/rust_driver_faux.rs | 4 ++-- samples/rust/rust_driver_platform.rs | 30 ++++++++++++++---------------- 3 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/rust/kernel/platform.rs b/rust/kernel/platform.rs index 8f028c76f9fa..d1cc5cee1cf5 100644 --- a/rust/kernel/platform.rs +++ b/rust/kernel/platform.rs @@ -135,7 +135,7 @@ macro_rules! module_platform_driver { /// # Examples /// ///``` -/// # use kernel::{acpi, bindings, c_str, device::Core, of, platform}; +/// # use kernel::{acpi, bindings, device::Core, of, platform}; /// /// struct MyDriver; /// @@ -144,7 +144,7 @@ macro_rules! module_platform_driver { /// MODULE_OF_TABLE, /// <MyDriver as platform::Driver>::IdInfo, /// [ -/// (of::DeviceId::new(c_str!("test,device")), ()) +/// (of::DeviceId::new(c"test,device"), ()) /// ] /// ); /// @@ -153,7 +153,7 @@ macro_rules! module_platform_driver { /// MODULE_ACPI_TABLE, /// <MyDriver as platform::Driver>::IdInfo, /// [ -/// (acpi::DeviceId::new(c_str!("LNUXBEEF")), ()) +/// (acpi::DeviceId::new(c"LNUXBEEF"), ()) /// ] /// ); /// diff --git a/samples/rust/rust_driver_faux.rs b/samples/rust/rust_driver_faux.rs index ecc9fd378cbd..23add3160693 100644 --- a/samples/rust/rust_driver_faux.rs +++ b/samples/rust/rust_driver_faux.rs @@ -2,7 +2,7 @@
//! Rust faux device sample.
-use kernel::{c_str, faux, prelude::*, Module}; +use kernel::{faux, prelude::*, Module};
module! { type: SampleModule, @@ -20,7 +20,7 @@ impl Module for SampleModule { fn init(_module: &'static ThisModule) -> Result<Self> { pr_info!("Initialising Rust Faux Device Sample\n");
- let reg = faux::Registration::new(c_str!("rust-faux-sample-device"), None)?; + let reg = faux::Registration::new(c"rust-faux-sample-device", None)?;
dev_info!(reg.as_ref(), "Hello from faux device!\n");
diff --git a/samples/rust/rust_driver_platform.rs b/samples/rust/rust_driver_platform.rs index ad08df0d73f0..b3fe45a43043 100644 --- a/samples/rust/rust_driver_platform.rs +++ b/samples/rust/rust_driver_platform.rs @@ -63,7 +63,7 @@ //!
use kernel::{ - acpi, c_str, + acpi, device::{ self, property::{FwNodeReferenceArgs, NArgs}, @@ -85,14 +85,14 @@ struct SampleDriver { OF_TABLE, MODULE_OF_TABLE, <SampleDriver as platform::Driver>::IdInfo, - [(of::DeviceId::new(c_str!("test,rust-device")), Info(42))] + [(of::DeviceId::new(c"test,rust-device"), Info(42))] );
kernel::acpi_device_table!( ACPI_TABLE, MODULE_ACPI_TABLE, <SampleDriver as platform::Driver>::IdInfo, - [(acpi::DeviceId::new(c_str!("LNUXBEEF")), Info(0))] + [(acpi::DeviceId::new(c"LNUXBEEF"), Info(0))] );
impl platform::Driver for SampleDriver { @@ -126,49 +126,47 @@ impl SampleDriver { fn properties_parse(dev: &device::Device) -> Result { let fwnode = dev.fwnode().ok_or(ENOENT)?;
- if let Ok(idx) = - fwnode.property_match_string(c_str!("compatible"), c_str!("test,rust-device")) - { + if let Ok(idx) = fwnode.property_match_string(c"compatible", c"test,rust-device") { dev_info!(dev, "matched compatible string idx = {}\n", idx); }
- let name = c_str!("compatible"); + let name = c"compatible"; let prop = fwnode.property_read::<CString>(name).required_by(dev)?; dev_info!(dev, "'{name}'='{prop:?}'\n");
- let name = c_str!("test,bool-prop"); - let prop = fwnode.property_read_bool(c_str!("test,bool-prop")); + let name = c"test,bool-prop"; + let prop = fwnode.property_read_bool(c"test,bool-prop"); dev_info!(dev, "'{name}'='{prop}'\n");
- if fwnode.property_present(c_str!("test,u32-prop")) { + if fwnode.property_present(c"test,u32-prop") { dev_info!(dev, "'test,u32-prop' is present\n"); }
- let name = c_str!("test,u32-optional-prop"); + let name = c"test,u32-optional-prop"; let prop = fwnode.property_read::<u32>(name).or(0x12); dev_info!(dev, "'{name}'='{prop:#x}' (default = 0x12)\n");
// A missing required property will print an error. Discard the error to // prevent properties_parse from failing in that case. - let name = c_str!("test,u32-required-prop"); + let name = c"test,u32-required-prop"; let _ = fwnode.property_read::<u32>(name).required_by(dev);
- let name = c_str!("test,u32-prop"); + let name = c"test,u32-prop"; let prop: u32 = fwnode.property_read(name).required_by(dev)?; dev_info!(dev, "'{name}'='{prop:#x}'\n");
- let name = c_str!("test,i16-array"); + let name = c"test,i16-array"; let prop: [i16; 4] = fwnode.property_read(name).required_by(dev)?; dev_info!(dev, "'{name}'='{prop:?}'\n"); let len = fwnode.property_count_elem::<u16>(name)?; dev_info!(dev, "'{name}' length is {len}\n");
- let name = c_str!("test,i16-array"); + let name = c"test,i16-array"; let prop: KVec<i16> = fwnode.property_read_array_vec(name, 4)?.required_by(dev)?; dev_info!(dev, "'{name}'='{prop:?}' (KVec)\n");
for child in fwnode.children() { - let name = c_str!("test,ref-arg"); + let name = c"test,ref-arg"; let nargs = NArgs::N(2); let prop: FwNodeReferenceArgs = child.property_get_reference_args(name, nargs, 0)?; dev_info!(dev, "'{name}'='{prop:?}'\n");
C-String literals were added in Rust 1.77. Replace instances of `kernel::c_str!` with C-String literals where possible.
Acked-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Alice Ryhl aliceryhl@google.com Reviewed-by: Benno Lossin lossin@kernel.org Signed-off-by: Tamir Duberstein tamird@gmail.com --- rust/kernel/seq_file.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/rust/kernel/seq_file.rs b/rust/kernel/seq_file.rs index 855e533813a6..518265558d66 100644 --- a/rust/kernel/seq_file.rs +++ b/rust/kernel/seq_file.rs @@ -4,7 +4,7 @@ //! //! C header: [`include/linux/seq_file.h`](srctree/include/linux/seq_file.h)
-use crate::{bindings, c_str, fmt, str::CStrExt as _, types::NotThreadSafe, types::Opaque}; +use crate::{bindings, fmt, str::CStrExt as _, types::NotThreadSafe, types::Opaque};
/// A utility for generating the contents of a seq file. #[repr(transparent)] @@ -36,7 +36,7 @@ pub fn call_printf(&self, args: fmt::Arguments<'_>) { unsafe { bindings::seq_printf( self.inner.get(), - c_str!("%pA").as_char_ptr(), + c"%pA".as_char_ptr(), core::ptr::from_ref(&args).cast::crate::ffi::c_void(), ); }
On Wed, Aug 13, 2025 at 11:59:10AM -0400, Tamir Duberstein wrote:
This series depends on step 3[0] which depends on steps 2a[1] and 2b[2] which both depend on step 1[3].
This series also has a minor merge conflict with a small change[4] that was taken through driver-core-testing. This series is marked as depending on that change; as such it contains the post-conflict patch.
Subsystem maintainers: I would appreciate your `Acked-by`s so that this can be taken through Miguel's tree (where the previous series must go).
Something seems to have gone wrong with your posting, both my mail server and the mail archives stop at patch 15. If it were just rate limiting or greylisting I'd have expected things to have sorted themselves out by now for one or the other.
On Wed, Aug 13, 2025 at 09:11:51PM +0100, Mark Brown wrote:
On Wed, Aug 13, 2025 at 11:59:10AM -0400, Tamir Duberstein wrote:
This series depends on step 3[0] which depends on steps 2a[1] and 2b[2] which both depend on step 1[3].
This series also has a minor merge conflict with a small change[4] that was taken through driver-core-testing. This series is marked as depending on that change; as such it contains the post-conflict patch.
Subsystem maintainers: I would appreciate your `Acked-by`s so that this can be taken through Miguel's tree (where the previous series must go).
Something seems to have gone wrong with your posting, both my mail server and the mail archives stop at patch 15. If it were just rate limiting or greylisting I'd have expected things to have sorted themselves out by now for one or the other.
Tamir mentioned to me that he ran into a daily limit on the number of emails he could send.
Alice
On Thu, Aug 14, 2025 at 10:24 AM Alice Ryhl aliceryhl@google.com wrote:
Tamir mentioned to me that he ran into a daily limit on the number of emails he could send.
He is posting the updates around the migration in Zulip:
https://rust-for-linux.zulipchat.com/#narrow/channel/288089-General/topic/CS...
Cheers, Miguel
linux-kselftest-mirror@lists.linaro.org