[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YvsvwCUVtNA5N5+U@gondor.apana.org.au>
Date: Tue, 16 Aug 2022 13:48:48 +0800
From: Herbert Xu <herbert@...dor.apana.org.au>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: Will Deacon <will@...nel.org>, Tejun Heo <tj@...nel.org>,
marcan@...can.st, peterz@...radead.org, jirislaby@...nel.org,
maz@...nel.org, mark.rutland@....com, boqun.feng@...il.com,
catalin.marinas@....com, oneukum@...e.com,
roman.penyaev@...fitbricks.com, asahi@...ts.linux.dev,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
stable@...r.kernel.org
Subject: Re: [PATCH] workqueue: Fix memory ordering race in queue_work*()
On Mon, Aug 15, 2022 at 10:27:10PM -0700, Linus Torvalds wrote:
>
> The bug seems to go back to commit e986a0d6cb36 ("locking/atomics,
> asm-generic/bitops/atomic.h: Rewrite using atomic_*() APIs"), and the
> fix looks to be as simple as just removing that early READ_ONCE return
> case (test_and_clear has the same bug).
>
> Will?
I think this is the source of all this:
commit 61e02392d3c7ecac1f91c0a90a8043d67e081846
Author: Will Deacon <will@...nel.org>
Date: Tue Feb 13 13:30:19 2018 +0000
locking/atomic/bitops: Document and clarify ordering semantics for failed test_and_{}_bit()
Unfortunately it doesn't work because lots of kernel code rely on
the memory barrier semantics of test_and_set_bit.
If ARM really wants this change, then eitehr create a new API
for it or audit every single existing use in the kernel.
Patching the documentation and then relying on it is magical thinking.
Cheers,
--
Email: Herbert Xu <herbert@...dor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
Powered by blists - more mailing lists