• Linus Torvalds's avatar
    tracefs: Avoid using the ei->dentry pointer unnecessarily · 99c001cb
    Linus Torvalds authored
    The eventfs_find_events() code tries to walk up the tree to find the
    event directory that a dentry belongs to, in order to then find the
    eventfs inode that is associated with that event directory.
    
    However, it uses an odd combination of walking the dentry parent,
    looking up the eventfs inode associated with that, and then looking up
    the dentry from there.  Repeat.
    
    But the code shouldn't have back-pointers to dentries in the first
    place, and it should just walk the dentry parenthood chain directly.
    
    Similarly, 'set_top_events_ownership()' looks up the dentry from the
    eventfs inode, but the only reason it wants a dentry is to look up the
    superblock in order to look up the root dentry.
    
    But it already has the real filesystem inode, which has that same
    superblock pointer.  So just pass in the superblock pointer using the
    information that's already there, instead of looking up extraneous data
    that is irrelevant.
    
    Link: https://lore.kernel.org/linux-trace-kernel/202401291043.e62e89dc-oliver.sang@intel.com/
    Link: https://lore.kernel.org/linux-trace-kernel/20240131185512.638645365@goodmis.org
    
    Cc: stable@vger.kernel.org
    Cc: Masami Hiramatsu <mhiramat@kernel.org>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
    Cc: Christian Brauner <brauner@kernel.org>
    Cc: Al Viro <viro@ZenIV.linux.org.uk>
    Cc: Ajay Kaher <ajay.kaher@broadcom.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Fixes: c1504e51 ("eventfs: Implement eventfs dir creation functions")
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarSteven Rostedt (Google) <rostedt@goodmis.org>
    99c001cb
event_inode.c 28.5 KB