Messages in this thread | | | Date | Mon, 11 Nov 2019 08:20:05 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH 2/4] irq_work: Fix irq_work_claim() ordering |
| |
* Frederic Weisbecker <frederic@kernel.org> wrote:
> When irq_work_claim() finds IRQ_WORK_PENDING flag already set, we just > return and don't raise a new IPI. We expect the destination to see > and handle our latest updades thanks to the pairing atomic_xchg() > in irq_work_run_list(). > > But cmpxchg() doesn't guarantee a full memory barrier upon failure. So > it's possible that the destination misses our latest updates. > > So use atomic_fetch_or() instead that is unconditionally fully ordered > and also performs exactly what we want here and simplify the code.
Just curious, how was this bug found - in the wild, or via code review?
Thanks,
Ingo
| |