[GIT PULL] configfs for v6.16

From: Andreas Hindborg
Date: Fri May 16 2025 - 03:52:23 EST


Hi Linus,

This is my first pull request after picking up configfs [1], and my
first pull request to you. I hope I got everything right!

Summary
=======

This pull request contains configfs changes for v6.16:

- Allow creation of rw files with custom permissions. This allows
drivers to better protect secrets written through configfs.

- Fix a bug where an error condition did not cause an early return
while populating attributes.

- Report ENOMEM rather than EFAULT when kvasprintf() fails in
config_item_set_name().

- Add a Rust API for configfs. This allows Rust drivers to use configfs
through a memory safe interface.

Merge conflicts with other trees
================================

This contains a merge conflict with drm-nova:

diff --cc samples/rust/Makefile
index b3c9178d654a,6a466afd2a21..000000000000
--- a/samples/rust/Makefile
+++ b/samples/rust/Makefile
@@@ -8,7 -8,7 +8,8 @@@ obj-$(CONFIG_SAMPLE_RUST_DMA) += rust
obj-$(CONFIG_SAMPLE_RUST_DRIVER_PCI) += rust_driver_pci.o
obj-$(CONFIG_SAMPLE_RUST_DRIVER_PLATFORM) += rust_driver_platform.o
obj-$(CONFIG_SAMPLE_RUST_DRIVER_FAUX) += rust_driver_faux.o
+obj-$(CONFIG_SAMPLE_RUST_CONFIGFS) += rust_configfs.o
+ obj-$(CONFIG_SAMPLE_RUST_DRIVER_AUXILIARY) += rust_driver_auxiliary.o

---

With cpufreq-arm:

diff --cc rust/bindings/bindings_helper.h
index 1a532b83a9af,7c1d78f68076..000000000000
--- a/rust/bindings/bindings_helper.h
+++ b/rust/bindings/bindings_helper.h
@@@ -10,7 -10,9 +10,10 @@@
#include <linux/blk-mq.h>
#include <linux/blk_types.h>
#include <linux/blkdev.h>
+ #include <linux/clk.h>
+#include <linux/configfs.h>
+ #include <linux/cpu.h>
+ #include <linux/cpufreq.h>
#include <linux/cpumask.h>
#include <linux/cred.h>
#include <linux/device/faux.h>
diff --cc rust/kernel/lib.rs
index 354eb1605194,871fcdc09b35..000000000000
--- a/rust/kernel/lib.rs
+++ b/rust/kernel/lib.rs
@@@ -42,8 -42,12 +42,14 @@@ pub mod alloc
pub mod block;
#[doc(hidden)]
pub mod build_assert;
+ #[cfg(CONFIG_COMMON_CLK)]
+ pub mod clk;
+#[cfg(CONFIG_CONFIGFS_FS)]
+pub mod configfs;
+ pub mod cpu;
+ #[cfg(CONFIG_CPU_FREQ)]
+ pub mod cpufreq;
+ pub mod cpumask;
pub mod cred;
pub mod device;
pub mod device_id;

Pull Request
============

The following changes since commit 8ffd015db85fea3e15a77027fda6c02ced4d2444:

Linux 6.15-rc2 (2025-04-13 11:54:49 -0700)

are available in the Git repository at:

https://git.kernel.org/pub/scm/linux/kernel/git/a.hindborg/linux.git tags/configfs-for-v6.16

for you to fetch changes up to c6b1908224593db76f77b904894cd51933559ae9:

MAINTAINERS: add configfs Rust abstractions (2025-05-12 11:05:07 +0200)

Best regards,
Andreas Hindborg


----------------------------------------------------------------
configfs-for-v6.16

----------------------------------------------------------------
Andreas Hindborg (3):
rust: configfs: introduce rust support for configfs
rust: configfs: add a sample demonstrating configfs usage
MAINTAINERS: add configfs Rust abstractions

Richard Weinberger (1):
configfs: Add CONFIGFS_ATTR_PERM helper

Zijun Hu (3):
configfs: Delete semicolon from macro type_print() definition
configfs: Do not override creating attribute file failure in populate_attrs()
configfs: Correct error value returned by API config_item_set_name()

MAINTAINERS | 2 +
fs/configfs/dir.c | 4 +-
fs/configfs/item.c | 2 +-
include/linux/configfs.h | 8 +-
rust/bindings/bindings_helper.h | 1 +
rust/helpers/mutex.c | 5 +
rust/kernel/configfs.rs | 1049 +++++++++++++++++++++++++++++++++++++++
rust/kernel/lib.rs | 2 +
samples/rust/Kconfig | 11 +
samples/rust/Makefile | 1 +
samples/rust/rust_configfs.rs | 192 +++++++
11 files changed, 1272 insertions(+), 5 deletions(-)
create mode 100644 rust/kernel/configfs.rs
create mode 100644 samples/rust/rust_configfs.rs

---

[1] https://lore.kernel.org/all/20250326-configfs-maintainer-v1-1-b175189fa27b@xxxxxxxxxx