On Tue, 31 Oct 2023 18:33:28 -0400 Steven Rostedt <rost...@goodmis.org> wrote:
> From: "Steven Rostedt (Google)" <rost...@goodmis.org> > > As the eventfs_inode is freed in two different locations, make a helper > function free_ei() to make sure all the allocated fields of the > eventfs_inode is freed. > > This requires renaming the existing free_ei() which is called by the srcu > handler to free_rcu_ei() and have free_ei() just do the freeing, where > free_rcu_ei() will call it. Looks good to me. Reviewed-by: Masami Hiramatsu (Google) <mhira...@kernel.org> Thanks, > > Signed-off-by: Steven Rostedt (Google) <rost...@goodmis.org> > --- > Changse since v4: > https://lore.kernel.org/all/20231031193428.133533...@goodmis.org/T/#u > > - Rebased to this patch series > > fs/tracefs/event_inode.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/fs/tracefs/event_inode.c b/fs/tracefs/event_inode.c > index 2c2c75b2ad73..0331d9bd568b 100644 > --- a/fs/tracefs/event_inode.c > +++ b/fs/tracefs/event_inode.c > @@ -129,6 +129,13 @@ static struct dentry *create_dir(const char *name, > struct dentry *parent) > return eventfs_end_creating(dentry); > } > > +static void free_ei(struct eventfs_inode *ei) > +{ > + kfree_const(ei->name); > + kfree(ei->d_children); > + kfree(ei); > +} > + > /** > * eventfs_set_ei_status_free - remove the dentry reference from an > eventfs_inode > * @ti: the tracefs_inode of the dentry > @@ -168,9 +175,7 @@ void eventfs_set_ei_status_free(struct tracefs_inode *ti, > struct dentry *dentry) > eventfs_remove_dir(ei_child); > } > > - kfree_const(ei->name); > - kfree(ei->d_children); > - kfree(ei); > + free_ei(ei); > return; > } > > @@ -784,13 +789,11 @@ struct eventfs_inode *eventfs_create_events_dir(const > char *name, struct dentry > return ERR_PTR(-ENOMEM); > } > > -static void free_ei(struct rcu_head *head) > +static void free_rcu_ei(struct rcu_head *head) > { > struct eventfs_inode *ei = container_of(head, struct eventfs_inode, > rcu); > > - kfree_const(ei->name); > - kfree(ei->d_children); > - kfree(ei); > + free_ei(ei); > } > > /** > @@ -883,7 +886,7 @@ void eventfs_remove_dir(struct eventfs_inode *ei) > for (i = 0; i < ei->nr_entries; i++) > unhook_dentry(&ei->d_children[i], &dentry_list); > unhook_dentry(&ei->dentry, &dentry_list); > - call_srcu(&eventfs_srcu, &ei->rcu, free_ei); > + call_srcu(&eventfs_srcu, &ei->rcu, free_rcu_ei); > } > mutex_unlock(&eventfs_mutex); > > -- > 2.42.0 -- Masami Hiramatsu (Google) <mhira...@kernel.org>