From 1d40cb05e077bb294f128c6a52630b93e452a8ed Mon Sep 17 00:00:00 2001 From: Tamir Duberstein Date: Mon, 22 Dec 2025 13:12:20 +0100 Subject: 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 Reviewed-by: Alice Ryhl Reviewed-by: Benno Lossin Signed-off-by: Tamir Duberstein Acked-by: Andreas Hindborg Link: https://lore.kernel.org/r/20251222-cstr-configfs-v1-1-cc1665c51c43@gmail.com Signed-off-by: Andreas Hindborg --- 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 466fb7f40762..2339c6467325 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 { //! 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 0ccc7553ef39..a1bd9db6010d 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::configfs_attrs; use kernel::new_mutex; @@ -35,7 +34,7 @@ struct Configuration { impl Configuration { fn new() -> impl PinInit { 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 @@ impl kernel::InPlaceModule for RustConfigfs { try_pin_init!(Self { config <- configfs::Subsystem::new( - c_str!("rust_configfs"), item_type, Configuration::new() + c"rust_configfs", item_type, Configuration::new() ), }) } -- cgit v1.2.3 From 6363844fdbbb76afe1d44d678fe0746390204a5f Mon Sep 17 00:00:00 2001 From: Christophe JAILLET Date: Mon, 29 Dec 2025 12:23:51 +0100 Subject: samples: configfs: Constify struct configfs_item_operations and configfs_group_operations 'struct configfs_item_operations' and 'configfs_group_operations' are not modified in this driver. Constifying these structures moves some data to a read-only section, so increases overall security, especially when the structure holds some function pointers. On a x86_64, with allmodconfig: Before: ====== text data bss dec hex filename 7507 6504 64 14075 36fb samples/configfs/configfs_sample.o After: ===== text data bss dec hex filename 7827 6184 64 14075 36fb samples/configfs/configfs_sample.o Signed-off-by: Christophe JAILLET Link: https://lore.kernel.org/r/70c5fd68fcc4d3ba1f18002012fae19acf4ce50b.1767007414.git.christophe.jaillet@wanadoo.fr Signed-off-by: Andreas Hindborg --- samples/configfs/configfs_sample.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/configfs/configfs_sample.c b/samples/configfs/configfs_sample.c index fd5d163828c5..c1b108ec4ea0 100644 --- a/samples/configfs/configfs_sample.c +++ b/samples/configfs/configfs_sample.c @@ -158,7 +158,7 @@ static void simple_child_release(struct config_item *item) kfree(to_simple_child(item)); } -static struct configfs_item_operations simple_child_item_ops = { +static const struct configfs_item_operations simple_child_item_ops = { .release = simple_child_release, }; @@ -215,7 +215,7 @@ static void simple_children_release(struct config_item *item) kfree(to_simple_children(item)); } -static struct configfs_item_operations simple_children_item_ops = { +static const struct configfs_item_operations simple_children_item_ops = { .release = simple_children_release, }; @@ -223,7 +223,7 @@ static struct configfs_item_operations simple_children_item_ops = { * Note that, since no extra work is required on ->drop_item(), * no ->drop_item() is provided. */ -static struct configfs_group_operations simple_children_group_ops = { +static const struct configfs_group_operations simple_children_group_ops = { .make_item = simple_children_make_item, }; @@ -292,7 +292,7 @@ static struct configfs_attribute *group_children_attrs[] = { * Note that, since no extra work is required on ->drop_item(), * no ->drop_item() is provided. */ -static struct configfs_group_operations group_children_group_ops = { +static const struct configfs_group_operations group_children_group_ops = { .make_group = group_children_make_group, }; -- cgit v1.2.3