On Thu, 8 Sep 2016, Fenghua Yu wrote: > > cgroup_exit(tsk); > + rdtgroup_exit(tsk);
So this actually does: > +void rdtgroup_exit(struct task_struct *tsk) > +{ > + > + if (!list_empty(&tsk->rg_list)) { > + struct rdtgroup *rdtgrp = tsk->rdtgroup; > + > + list_del_init(&tsk->rg_list); > + tsk->rdtgroup = NULL; > + atomic_dec(&rdtgrp->refcount); > + } > +} with complete lack of locking ..... Brilliant stuff that. tglx