6.6-stable review patch. If anyone has any objections, please let me know.
------------------
From: "Steven Rostedt (Google)" rostedt@goodmis.org
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@goodmis.org Signed-off-by: Greg Kroah-Hartman gregkh@linuxfoundation.org --- fs/tracefs/event_inode.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-)
--- 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 ev } }
- ef->is_freed = 1; - list_del_rcu(&ef->list); list_add_tail(&ef->del_list, head); }