Re: [PATCH 3/6] tracefs: dentry lookup crapectomy
From: Al Viro
Date: Tue Jan 30 2024 - 19:07:47 EST
On Tue, Jan 30, 2024 at 06:55:36PM -0500, Steven Rostedt wrote:
> Actually it's the tracefs_start_creating() locks the inode, the
> eventfs_start_creating() doesn't.
Right.
> >
> > > if (unlikely(!inode))
> > > return eventfs_failed_creating(dentry);
> >
> > ... and that still unlocks it.
This is still bogus, though - both the stray dput() and
dropping a reference to internal mount.
struct dentry *eventfs_failed_creating(struct dentry *dentry)
{
dput(dentry);
simple_release_fs(&tracefs_mount, &tracefs_mount_count);
return NULL;
}