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

Reply via email to