If we have LOCKDOWN_TRACEFS, the function bails out - *after*
having locked the parent directory and without bothering to
undo that.  Just check it before tracefs_start_creating()...

Fixes: e24709454c45 "tracefs/eventfs: Add missing lockdown checks"
Signed-off-by: Al Viro <[email protected]>
---
 fs/tracefs/event_inode.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c
index 8705c77a9e75..93c231601c8e 100644
--- a/fs/tracefs/event_inode.c
+++ b/fs/tracefs/event_inode.c
@@ -757,7 +757,7 @@ struct eventfs_inode *eventfs_create_events_dir(const char 
*name, struct dentry
                                                const struct eventfs_entry 
*entries,
                                                int size, void *data)
 {
-       struct dentry *dentry = tracefs_start_creating(name, parent);
+       struct dentry *dentry;
        struct eventfs_root_inode *rei;
        struct eventfs_inode *ei;
        struct tracefs_inode *ti;
@@ -768,6 +768,7 @@ struct eventfs_inode *eventfs_create_events_dir(const char 
*name, struct dentry
        if (security_locked_down(LOCKDOWN_TRACEFS))
                return NULL;
 
+       dentry = tracefs_start_creating(name, parent);
        if (IS_ERR(dentry))
                return ERR_CAST(dentry);
 
-- 
2.47.3


Reply via email to