On Mon, Nov 22, 2021 at 6:25 PM Christoph Lameter <cl@xxxxxxxxxx> wrote: > > > 1) c->cpu_slab->page is unfrozen and frozen by another cpu. (is it possible?) > > Yes. > > > In the first case, cpu_slab structure can be different. But updating > > freelist isn't a problem. > > It is a problem because the update can occur on a different processor > without the TID which can race with another update on another processor. > Do you mean that without TID, multiple cpu can race on one cpu_slab->freelist? How is it possible? As you know, cpu_slab is per-cpu variable and cpu_slab->freelist is accessed via "this_cpu_cmpxchg" in the area where preemption is enabled. I can't imagine what kind of situation will make that race happen.