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