Re: [PATCH v9] kernel/fork: beware of __put_task_struct calling context

From: Andrew Morton
Date: Tue May 16 2023 - 17:06:02 EST


On Tue, 16 May 2023 20:24:04 +0100 Matthew Wilcox <willy@xxxxxxxxxxxxx> wrote:

> On Tue, May 16, 2023 at 04:14:41PM -0300, Wander Lairson Costa wrote:
> > +void __put_task_struct_rcu_cb(struct rcu_head *rhp)
> > +{
> > + struct task_struct *task = container_of(rhp, struct task_struct, rcu);
> > +
> > + __put_task_struct(task);
> > +}
> > +EXPORT_SYMBOL_GPL(__put_task_struct_rcu_cb);
>
> Why does this need to be exported when its only caller is within the
> main kernel and cannot possibly be built as a module?

It's referenced by inlined put_task_struct(), which is called from all
over.

However I believe the above definition could be inside #ifdef
CONFIG_PREEMPT_RT, to save a scrap of resources?