Re: [PATCH v2] buffer: Fix I/O error due to ARM read-after-read hazard

From: Will Deacon
Date: Wed Nov 13 2019 - 05:24:04 EST


On Tue, Nov 12, 2019 at 10:39:01AM -0800, Linus Torvalds wrote:
> On Tue, Nov 12, 2019 at 10:22 AM Catalin Marinas
> <catalin.marinas@xxxxxxx> wrote:
> >
> > OK, so this includes changing test_bit() to perform a READ_ONCE.
>
> That's not going to happen.

Ok, I'll stick my neck out here, but if test_bit() is being used to read
a bitmap that is being concurrently modified (e.g. by set_bit() which boils
down to atomic_long_or()), then why isn't READ_ONCE() required? Right now,
test_bit takes a 'const volatile unsigned long *addr' argument, so I don't
see that you'll get a change in codegen except on alpha and, with this
erratum, arm32.

Will