On Tue, Jun 11, 2024 at 10:25:52AM -0700, Paul E. McKenney wrote:
> On Tue, Jun 11, 2024 at 06:40:49PM +0200, Uladzislau Rezki wrote:
> > > >
> > > > These look ok to me. In the last two cases, the callback function is
> > > > also
> > > > stored in a data structure, eg:
> > > >
> > > > static struct mfc6_cache *ip6mr_cache_alloc(void)
> > > > {
> > > > struct mfc6_cache *c = kmem_cache_zalloc(mrt_cachep,
> > > > GFP_KERNEL);
> > > > if (!c)
> > > > return NULL;
> > > > c->_c.mfc_un.res.last_assert = jiffies - MFC_ASSERT_THRESH - 1;
> > > > c->_c.mfc_un.res.minvif = MAXMIFS;
> > > > c->_c.free = ip6mr_cache_free_rcu;
> > > > refcount_set(&c->_c.mfc_un.res.refcount, 1);
> > > > return c;
> > > > }
> > > >
> > > > Should that be left as it is?
> > >
> > > Given that ->_c.free isn't used in the RCU callback, I am guessing that
> > > this is intended for debugging purposes, so that you can see from a crash
> > > dump how this will be freed. But I could be completely off-base here.
> > >
> > > One approach would be to remove the ->_c.free field and call attention
> > > to this in the patches' commit logs.
> > >
> > > Another would be to instead put the address of the allocation function
> > > in ->_c.free, and again call attention to this in the commit logs.
> > >
> > > Is there a better approach than these three? ;-)
> > >
> > IMO, "_c.free" should be removed:
>
> Why not send the patch and see what the maintainers say? If they object,
> you can always fall back to one of the other two methods, depending on
> the nature of their objection.
>
I can send the patch :)
--
Uladzislau Rezki