Re: [PATCH -tip 22/32] sched: Split the cookie and setup per-task cookie on fork

From: Joel Fernandes
Date: Tue Dec 01 2020 - 14:21:13 EST


On Wed, Nov 25, 2020 at 12:10:14PM +0100, Peter Zijlstra wrote:
> On Tue, Nov 17, 2020 at 06:19:52PM -0500, Joel Fernandes (Google) wrote:
> > +void sched_core_tag_requeue(struct task_struct *p, unsigned long cookie, bool group)
> > +{
> > + if (!p)
> > + return;
> > +
> > + if (group)
> > + p->core_group_cookie = cookie;
> > + else
> > + p->core_task_cookie = cookie;
> > +
> > + /* Use up half of the cookie's bits for task cookie and remaining for group cookie. */
> > + p->core_cookie = (p->core_task_cookie <<
> > + (sizeof(unsigned long) * 4)) + p->core_group_cookie;
>
> This seems dangerous; afaict there is nothing that prevents cookie
> collision.

This is fixed in a later patch by Josh "sched: Refactor core cookie into
struct" where we are having independent fields for each type of cookie.

I'll squash it next time I post to prevent confusion. Thanks,

- Joel