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

