On Thu, Jun 23, 2016 at 12:34:24PM -0700, Linus Torvalds wrote: > On Thu, Jun 23, 2016 at 12:11 PM, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote: > > > > Didn't we talk about using SLAB_DESTROY_BY_RCU for task_struct before? > > If that is possible, a reuse in per-cpu cache is equally possible. > > > > All we really want to guarantee is that the memory remains a > > task_struct, it need not remain the same task, right? > > No, we can't do SLAB_DESTROY_BY_RCU for the task_struct itself, > because the RCU list traversal does expect that the thread and task > lists are stable even if it walks into a "stale" struct task_struct. Indeed. OK, so the situation we talked about before is different, we wanted to do SLAB_DESTROY_BY_RCU on top of the existing delayed_put_task_struct() to get a double grace period. The problem was for things like rq->curr, which isn't RCU managed as such, we could still do: rcu_read_lock(); task = rq->curr; and rely on task being _a_ task_struct, even though it might not be the self-same task we thought we had. So yes, not an option and I was stitching together two half remembered situations to create utter nonsense. -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html