lkml.org 
[lkml]   [2023]   [Nov]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH] proc: make struct proc_dir_entry::name const
Multiply ::name into "mut_name" and "name" which is "const char*".

PDE's name must not be mutated on live PDE, hint modules they should not
do it.

Many other members must not be mutated live as well, but start with
obvious one.

Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com>
---

fs/proc/generic.c | 2 +-
fs/proc/internal.h | 5 ++++-
fs/proc/proc_net.c | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)

--- a/fs/proc/generic.c
+++ b/fs/proc/generic.c
@@ -436,7 +436,7 @@ static struct proc_dir_entry *__proc_create(struct proc_dir_entry **parent,
}
}

- memcpy(ent->name, fn, qstr.len + 1);
+ memcpy(ent->mut_name, fn, qstr.len + 1);
ent->namelen = qstr.len;
ent->mode = mode;
ent->nlink = nlink;
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -59,7 +59,10 @@ struct proc_dir_entry {
struct proc_dir_entry *parent;
struct rb_root subdir;
struct rb_node subdir_node;
- char *name;
+ union {
+ const char *name;
+ char *mut_name;
+ };
umode_t mode;
u8 flags;
u8 namelen;
--- a/fs/proc/proc_net.c
+++ b/fs/proc/proc_net.c
@@ -368,7 +368,7 @@ static __net_init int proc_net_ns_init(struct net *net)
netd->namelen = 3;
netd->parent = &proc_root;
netd->name = netd->inline_name;
- memcpy(netd->name, "net", 4);
+ memcpy(netd->mut_name, "net", 4);

uid = make_kuid(net->user_ns, 0);
if (!uid_valid(uid))
\
 
 \ /
  Last update: 2023-11-29 10:49    [W:0.604 / U:0.080 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site