[PATCH 3/6] configfs: Treat attribute structures as const internally
From: Thomas Weißschuh
Date: Thu Jul 16 2026 - 13:16:19 EST
The configfs core never modifies the attribute structures defined in
driver core.
Reflect this in the types used internally in the configfs core.
Signed-off-by: Thomas Weißschuh <linux@xxxxxxxxxxxxxx>
---
fs/configfs/configfs_internal.h | 10 +++++-----
fs/configfs/dir.c | 6 +++---
fs/configfs/file.c | 6 +++---
fs/configfs/inode.c | 2 +-
4 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/fs/configfs/configfs_internal.h b/fs/configfs/configfs_internal.h
index acdeea8e2d69..4bc19cd8d666 100644
--- a/fs/configfs/configfs_internal.h
+++ b/fs/configfs/configfs_internal.h
@@ -104,17 +104,17 @@ static inline struct config_item * to_item(struct dentry * dentry)
return ((struct config_item *) sd->s_element);
}
-static inline struct configfs_attribute * to_attr(struct dentry * dentry)
+static inline const struct configfs_attribute * to_attr(struct dentry * dentry)
{
struct configfs_dirent * sd = dentry->d_fsdata;
- return ((struct configfs_attribute *) sd->s_element);
+ return ((const struct configfs_attribute *) sd->s_element);
}
-static inline struct configfs_bin_attribute *to_bin_attr(struct dentry *dentry)
+static inline const struct configfs_bin_attribute *to_bin_attr(struct dentry *dentry)
{
- struct configfs_attribute *attr = to_attr(dentry);
+ const struct configfs_attribute *attr = to_attr(dentry);
- return container_of(attr, struct configfs_bin_attribute, cb_attr);
+ return container_of_const(attr, struct configfs_bin_attribute, cb_attr);
}
static inline struct config_item *configfs_get_config_item(struct dentry *dentry)
diff --git a/fs/configfs/dir.c b/fs/configfs/dir.c
index 3c88f13f1ca2..9a5c2bc4065d 100644
--- a/fs/configfs/dir.c
+++ b/fs/configfs/dir.c
@@ -461,7 +461,7 @@ static struct dentry * configfs_lookup(struct inode *dir,
*/
if ((sd->s_type & CONFIGFS_NOT_PINNED) &&
!strcmp(configfs_get_name(sd), dentry->d_name.name)) {
- struct configfs_attribute *attr = sd->s_element;
+ const struct configfs_attribute *attr = sd->s_element;
umode_t mode = (attr->ca_mode & S_IALLUGO) | S_IFREG;
dentry->d_fsdata = configfs_get(sd);
@@ -622,8 +622,8 @@ static int populate_attrs(struct config_item *item)
{
const struct config_item_type *t = item->ci_type;
const struct configfs_group_operations *ops;
- struct configfs_attribute *attr;
- struct configfs_bin_attribute *bin_attr;
+ const struct configfs_attribute *attr;
+ const struct configfs_bin_attribute *bin_attr;
int error = 0;
int i;
diff --git a/fs/configfs/file.c b/fs/configfs/file.c
index a48cece775a3..6460b000c593 100644
--- a/fs/configfs/file.c
+++ b/fs/configfs/file.c
@@ -41,8 +41,8 @@ struct configfs_buffer {
struct config_item *item;
struct module *owner;
union {
- struct configfs_attribute *attr;
- struct configfs_bin_attribute *bin_attr;
+ const struct configfs_attribute *attr;
+ const struct configfs_bin_attribute *bin_attr;
};
};
@@ -291,7 +291,7 @@ static int __configfs_open_file(struct inode *inode, struct file *file, int type
{
struct dentry *dentry = file->f_path.dentry;
struct configfs_fragment *frag = to_frag(file);
- struct configfs_attribute *attr;
+ const struct configfs_attribute *attr;
struct configfs_buffer *buffer;
int error;
diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c
index 68290fe0e374..69f1f24e890f 100644
--- a/fs/configfs/inode.c
+++ b/fs/configfs/inode.c
@@ -178,7 +178,7 @@ struct inode *configfs_create(struct dentry *dentry, umode_t mode)
*/
const unsigned char * configfs_get_name(struct configfs_dirent *sd)
{
- struct configfs_attribute *attr;
+ const struct configfs_attribute *attr;
BUG_ON(!sd || !sd->s_element);
--
2.55.0