On Wed, Jun 1, 2022 at 10:42 AM Feng zhou <zhoufeng.zf@xxxxxxxxxxxxx> wrote: > > static inline void ___pcpu_freelist_push(struct pcpu_freelist_head *head, > @@ -130,14 +134,19 @@ static struct pcpu_freelist_node *___pcpu_freelist_pop(struct pcpu_freelist *s) > orig_cpu = cpu = raw_smp_processor_id(); > while (1) { > head = per_cpu_ptr(s->freelist, cpu); > + if (READ_ONCE(head->is_empty)) > + goto next_cpu; > raw_spin_lock(&head->lock); > node = head->first; > if (node) { extra bool is unnecessary. just READ_ONCE(head->first)