Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 00/19] rust: replace `kernel::c_str!` with C-Strings
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 at
gmail.com/ [0]
Link: https://lore.kernel.org/all/20250709-core-cstr-fanout-1-v1-0-64308e7203fc
at gmail.com/ [1]
Link: https://lore.kernel.org/all/20250709-core-cstr-fanout-1-v1-0-fd793b3e58a2
at gmail.com/ [2]
Link: https://lore.kernel.org/all/20250704-core-cstr-prepare-v1-0-a91524037783
at gmail.com/ [3]
Link: https://lore.kernel.org/all/20250704-cstr-include-aux-v1-1-e1a404ae92ac at
gmail.com/ [4]
Signed-off-by: Tamir Duberstein <tamird at 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 at
gmail.com
---
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 at
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 at
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 at gmail.com>
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 01/19] drivers: net: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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);
}
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 02/19] gpu: nova-core: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Acked-by: Danilo Krummrich <dakr at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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
)?,
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 03/19] rust: auxiliary: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Acked-by: Danilo Krummrich <dakr at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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;
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 04/19] rust: clk: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at gmail.com>
Acked-by: Stephen Boyd <sboyd at 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()?;
///
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 05/19] rust: configfs: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at gmail.com>
Acked-by: Andreas Hindborg <a.hindborg at 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()
),
})
}
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 06/19] rust: cpufreq: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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;
///
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 07/19] rust: device: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Acked-by: Danilo Krummrich <dakr at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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(())
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 08/19] rust: firmware: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Acked-by: Danilo Krummrich <dakr at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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
};
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 09/19] rust: kunit: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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
);
}}}}
}}
--
2.50.1
Tamir Duberstein
2025-Aug-13 15:59 UTC
[PATCH v2 10/19] rust: macros: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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.
--
2.50.1
Tamir Duberstein
2025-Aug-13 16:00 UTC
[PATCH v2 12/19] rust: net: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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);
/// }
///
--
2.50.1
Tamir Duberstein
2025-Aug-13 16:00 UTC
[PATCH v2 13/19] rust: pci: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Acked-by: Danilo Krummrich <dakr at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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,
--
2.50.1
Tamir Duberstein
2025-Aug-13 16:00 UTC
[PATCH v2 14/19] rust: platform: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Acked-by: Danilo Krummrich <dakr at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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");
--
2.50.1
Tamir Duberstein
2025-Aug-13 16:00 UTC
[PATCH v2 15/19] rust: seq_file: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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>(),
);
}
--
2.50.1
Tamir Duberstein
2025-Aug-13 17:56 UTC
[PATCH v2 11/19] rust: miscdevice: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org>
Reviewed-by: Alice Ryhl <aliceryhl at google.com>
Reviewed-by: Benno Lossin <lossin at kernel.org>
Signed-off-by: Tamir Duberstein <tamird at 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 {
--
2.50.1
Viresh Kumar
2025-Aug-14 04:15 UTC
[PATCH v2 06/19] rust: cpufreq: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org> > Reviewed-by: Alice Ryhl <aliceryhl at google.com> > Reviewed-by: Benno Lossin <lossin at kernel.org> > Signed-off-by: Tamir Duberstein <tamird at 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 at linaro.org> -- viresh
Alexandre Courbot
2025-Aug-15 11:11 UTC
[PATCH v2 02/19] gpu: nova-core: replace `kernel::c_str!` with C-Strings
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 at linuxfoundation.org> > Reviewed-by: Alice Ryhl <aliceryhl at google.com> > Reviewed-by: Benno Lossin <lossin at kernel.org> > Acked-by: Danilo Krummrich <dakr at kernel.org> > Signed-off-by: Tamir Duberstein <tamird at gmail.com>Reviewed-by: Alexandre Courbot <acourbot at nvidia.com>