return ret;
 }
 
-static void update_top_events_attr(struct eventfs_inode *ei, struct dentry *dentry)
+static void update_top_events_attr(struct eventfs_inode *ei, struct super_block *sb)
 {
-       struct inode *inode;
+       struct inode *root;
 
        /* Only update if the "events" was on the top level */
        if (!ei || !(ei->attr.mode & EVENTFS_TOPLEVEL))
                return;
 
        /* Get the tracefs root inode. */
-       inode = d_inode(dentry->d_sb->s_root);
-       ei->attr.uid = inode->i_uid;
-       ei->attr.gid = inode->i_gid;
+       root = d_inode(sb->s_root);
+       ei->attr.uid = root->i_uid;
+       ei->attr.gid = root->i_gid;
 }
 
 static void set_top_events_ownership(struct inode *inode)
 {
        struct tracefs_inode *ti = get_tracefs(inode);
        struct eventfs_inode *ei = ti->private;
-       struct dentry *dentry;
 
        /* The top events directory doesn't get automatically updated */
        if (!ei || !ei->is_events || !(ei->attr.mode & EVENTFS_TOPLEVEL))
                return;
 
-       dentry = ei->dentry;
-
-       update_top_events_attr(ei, dentry);
+       update_top_events_attr(ei, inode->i_sb);
 
        if (!(ei->attr.mode & EVENTFS_SAVE_UID))
                inode->i_uid = ei->attr.uid;
 
        mutex_lock(&eventfs_mutex);
        do {
-               /* The parent always has an ei, except for events itself */
-               ei = dentry->d_parent->d_fsdata;
+               // The parent is stable because we do not do renames
+               dentry = dentry->d_parent;
+               // ... and directories always have d_fsdata
+               ei = dentry->d_fsdata;
 
                /*
                 * If the ei is being freed, the ownership of the children
                        ei = NULL;
                        break;
                }
-
-               dentry = ei->dentry;
+               // Walk upwards until you find the events inode
        } while (!ei->is_events);
        mutex_unlock(&eventfs_mutex);
 
-       update_top_events_attr(ei, dentry);
+       update_top_events_attr(ei, dentry->d_sb);
 
        return ei;
 }