tracefs: Some minor fixes
Subsystems (2)
Steven Rostedt
maintainercover tracefs: Some minor fixes
Steven Rostedt (Google) (2):
eventfs: Keep the directories from having the same inode number as files
tracefs: Update inode permissions on remount
----
fs/tracefs/event_inode.c | 23 ++++++++++++++++++----- fs/tracefs/inode.c | 15 ++++++++++++--- 2 files changed, 30 insertions(+), 8 deletions(-)
Steven Rostedt
maintainerPATCH 1/2 eventfs: Keep the directories from having the same inode number as files
From: "Steven Rostedt (Google)" <[email protected]>
The directories require unique inode numbers but all the eventfs files have the same inode number. Prevent the directories from having the same inode numbers as the files as that can confuse some tooling.
--- fs/tracefs/event_inode.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
fs/tracefs/event_inode.c +5 -1
@@ -50,8 +50,12 @@ static struct eventfs_root_inode *get_root_inode(struct eventfs_inode *ei)/* Just try to make something consistent and unique */ static int eventfs_dir_ino (struct eventfs_inode *ei) { -if (!ei->ino) +if (!ei->ino) { ei->ino =get_next_ino (); +/* Must not have the file inode number */ +if (ei->ino ==EVENTFS_FILE_INODE_INO ) + ei->ino =get_next_ino (); + }return ei->ino; }
Signature · 1 line
2.43.0
Steven Rostedt
maintainerPATCH 2/2 tracefs: Update inode permissions on remount
In reply to Steven RostedtFrom: "Steven Rostedt (Google)" <[email protected]>
When a remount happens, if a gid or uid is specified update the inodes to have the same gid and uid. This will allow the simplification of the permissions logic for the dynamically created files and directories.
--- fs/tracefs/event_inode.c | 17 +++++++++++++---- fs/tracefs/inode.c | 15 ++++++++++++--- 2 files changed, 25 insertions(+), 7 deletions(-)
fs/tracefs/event_inode.c +13 -4
@@ -317,20 +317,29 @@ void eventfs_remount(struct tracefs_inode *ti, bool update_uid, bool update_gid)if (!ei)return ; -if (update_uid) +if (update_uid) { ei->attr.mode &= ~EVENTFS_SAVE_UID ; + ei->attr.uid = ti->vfs_inode.i_uid; + } + -if (update_gid) +if (update_gid) { ei->attr.mode &= ~EVENTFS_SAVE_GID ; + ei->attr.gid = ti->vfs_inode.i_gid; + }if (!ei->entry_attrs)return ;for (int i =0 ; i < ei->nr_entries; i++) { -if (update_uid) +if (update_uid) { ei->entry_attrs[i].mode &= ~EVENTFS_SAVE_UID ; -if (update_gid) + ei->entry_attrs[i].uid = ti->vfs_inode.i_uid; + } +if (update_gid) { ei->entry_attrs[i].mode &= ~EVENTFS_SAVE_GID ; + ei->entry_attrs[i].gid = ti->vfs_inode.i_gid; + } } }
fs/tracefs/inode.c +12 -3
@@ -373,12 +373,21 @@ static int tracefs_apply_options(struct super_block *sb, bool remount)rcu_read_lock ();list_for_each_entry_rcu (ti, &tracefs_inodes, list) { -if (update_uid) +if (update_uid) { ti->flags &= ~TRACEFS_UID_PERM_SET ; + ti->vfs_inode.i_uid = fsi->uid; + } -if (update_gid) +if (update_gid) { ti->flags &= ~TRACEFS_GID_PERM_SET ; - + ti->vfs_inode.i_gid = fsi->gid; + } + +/* +* Note, the above ti->vfs_inode updates are +* used in eventfs_remount() so they must come +* before calling it. +*/ if (ti->flags &TRACEFS_EVENT_INODE )eventfs_remount (ti, update_uid, update_gid); }
Signature · 1 line
2.43.0