From: "Steven Rostedt (Google)" <rostedt@xxxxxxxxxxx> This reverts commit fa18a8a0539b02cc621938091691f0b73f0b1288. The eventfs was not designed properly and may have some hidden bugs in it. Linus rewrote it properly and I trust his version more than this one. Revert the backported patches for 6.6 and re-apply all the changes to make it equivalent to Linus's version. Signed-off-by: Steven Rostedt (Google) <rostedt@xxxxxxxxxxx> --- fs/tracefs/event_inode.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c index a64d8fa39e54..8c8d64e76103 100644 --- a/fs/tracefs/event_inode.c +++ b/fs/tracefs/event_inode.c @@ -38,7 +38,6 @@ struct eventfs_inode { * @fop: file_operations for file or directory * @iop: inode_operations for file or directory * @data: something that the caller will want to get to later on - * @is_freed: Flag set if the eventfs is on its way to be freed * @mode: the permission that the file or directory should have */ struct eventfs_file { @@ -53,14 +52,15 @@ struct eventfs_file { * Union - used for deletion * @del_list: list of eventfs_file to delete * @rcu: eventfs_file to delete in RCU + * @is_freed: node is freed if one of the above is set */ union { struct list_head del_list; struct rcu_head rcu; + unsigned long is_freed; }; void *data; - unsigned int is_freed:1; - unsigned int mode:31; + umode_t mode; }; static DEFINE_MUTEX(eventfs_mutex); @@ -814,8 +814,6 @@ static void eventfs_remove_rec(struct eventfs_file *ef, struct list_head *head, } } - ef->is_freed = 1; - list_del_rcu(&ef->list); list_add_tail(&ef->del_list, head); } -- 2.43.0