[for-linus,0/2] eventfs: Fixes for v6.7-rc2

Message ID 20231120231553.374392736@goodmis.org
Headers
Series eventfs: Fixes for v6.7-rc2 |

Message

Steven Rostedt Nov. 20, 2023, 11:15 p.m. UTC
  A couple of fixes to eventfs:

- With the usage of simple_recursive_remove() recommended by Al Viro,
  the code should not be calling "d_invalidate()" itself. Doing so
  is causing crashes. The code was calling d_invalidate() on the race
  of trying to look up a file while the parent was being deleted.
  This was detected, and the added dentry was having d_invalidate() called
  on it, but the deletion of the directory was also calling d_invalidate()
  on that same dentry.

- A fix to not free the eventfs_inode (ei) until the last dput() was called
  on its ei->dentry made the ei->dentry exist even after it was marked
  for free by setting the ei->is_freed. But code elsewhere still was
  checking if ei->dentry was NULL if ei->is_freed is set and would
  trigger WARN_ON if that was the case. That's no longer true and there
  should not be any warnings when it is true.

Steven Rostedt (Google) (2):
      eventfs: Remove expectation that ei->is_freed means ei->dentry == NULL
      eventfs: Do not invalidate dentry in create_file/dir_dentry()

----
 fs/tracefs/event_inode.c | 41 ++++++++++++++++++-----------------------
 1 file changed, 18 insertions(+), 23 deletions(-)
  

Comments

Steven Rostedt Nov. 20, 2023, 11:50 p.m. UTC | #1
On Mon, 20 Nov 2023 18:15:53 -0500
Steven Rostedt <rostedt@goodmis.org> wrote:

> A couple of fixes to eventfs:
> 
> - With the usage of simple_recursive_remove() recommended by Al Viro,
>   the code should not be calling "d_invalidate()" itself. Doing so
>   is causing crashes. The code was calling d_invalidate() on the race
>   of trying to look up a file while the parent was being deleted.
>   This was detected, and the added dentry was having d_invalidate() called
>   on it, but the deletion of the directory was also calling d_invalidate()
>   on that same dentry.
> 
> - A fix to not free the eventfs_inode (ei) until the last dput() was called
>   on its ei->dentry made the ei->dentry exist even after it was marked
>   for free by setting the ei->is_freed. But code elsewhere still was
>   checking if ei->dentry was NULL if ei->is_freed is set and would
>   trigger WARN_ON if that was the case. That's no longer true and there
>   should not be any warnings when it is true.
> 
> Steven Rostedt (Google) (2):
>       eventfs: Remove expectation that ei->is_freed means ei->dentry == NULL
>       eventfs: Do not invalidate dentry in create_file/dir_dentry()
> 
> ----
>  fs/tracefs/event_inode.c | 41 ++++++++++++++++++-----------------------
>  1 file changed, 18 insertions(+), 23 deletions(-)

Oops, used the "for-linus" script when this was suppose to be just a normal
"PATCH" script :-p

-- Steve