Thread (43 messages) 43 messages, 9 authors, 2019-12-19

Re: READ_ONCE() + STACKPROTECTOR_STRONG == :/ (was Re: [GIT PULL] Please pull powerpc/linux.git powerpc-5.5-2 tag (topic/kasan-bitops))

From: Christian Borntraeger <hidden>
Date: 2019-12-12 18:29:29
Also in: linux-arch, lkml


On 12.12.19 19:06, Will Deacon wrote:
On Thu, Dec 12, 2019 at 09:41:32AM -0800, Linus Torvalds wrote:
quoted
On Thu, Dec 12, 2019 at 2:46 AM Peter Zijlstra [off-list ref] wrote:
quoted
+#ifdef GCC_VERSION < 40800
Where does that 4.8 version check come from, and why?

Yeah, I know, but this really wants a comment. Sadly it looks like gcc
bugzilla is down, so

   https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145

currently gives an "Internal Server Error" for me.

[ Delete the horrid code we have because of gcc bugs ]
quoted
+#else /* GCC_VERSION < 40800 */
+
+#define READ_ONCE_NOCHECK(x)                                           \
+({                                                                     \
+       typeof(x) __x = *(volatile typeof(x))&(x);                      \
I think we can/should just do this unconditionally if it helps th eissue.
I'm currently trying to solve the issue by removing volatile from the bitop
function signatures, but it's grotty because there are quite a few callers
to fix up. I'm still trying to do it, because removing volatile fields from
structurs is generally a "good thing", but I'd be keen to simplify
READ_ONCE() as you suggest regardless.
As I am the one who added the foundation of READ_ONCEs uglyness, I am now in
favour of re-simplifying it again. I was first a bit scared about re-introducing
bugs, but the gcc testsuite has this particular case covered, so hopefully we
should not see the issue with volatile and aggregate types again.

Christian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help