Re: [PATCH] bpf: Simplify code by using for_each_cpu_wrap()

From: Alexei Starovoitov
Date: Wed Aug 17 2022 - 12:41:36 EST


On Wed, Aug 17, 2022 at 6:08 AM Punit Agrawal
<punit.agrawal@xxxxxxxxxxxxx> wrote:
>
> No functional change intended.

?

> - orig_cpu = cpu = raw_smp_processor_id();
> - while (1) {
> + for_each_cpu_wrap(cpu, cpu_possible_mask, raw_smp_processor_id()) {
> struct pcpu_freelist_head *head;
>
> head = per_cpu_ptr(s->freelist, cpu);
> @@ -68,15 +67,10 @@ static inline void ___pcpu_freelist_push_nmi(struct pcpu_freelist *s,
> raw_spin_unlock(&head->lock);
> return;
> }
> - cpu = cpumask_next(cpu, cpu_possible_mask);
> - if (cpu >= nr_cpu_ids)
> - cpu = 0;
> -
> - /* cannot lock any per cpu lock, try extralist */
> - if (cpu == orig_cpu &&
> - pcpu_freelist_try_push_extra(s, node))
> - return;
> }
> +
> + /* cannot lock any per cpu lock, try extralist */
> + pcpu_freelist_try_push_extra(s, node);

This is obviously not equivalent!