Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1591349

Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE

From Arnd Bergmann <arnd@arndb.de>
Newsgroups linux.kernel
Subject Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE
Date 2017-03-02 19:00 +0100
Message-ID <tgDbb-5KR-11@gated-at.bofh.it> (permalink)
References <tgCf7-56J-7@gated-at.bofh.it> <tgCf7-56J-5@gated-at.bofh.it> <tgCf8-56J-47@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


On Thu, Mar 2, 2017 at 5:51 PM, Christian Borntraeger
<borntraeger@de.ibm.com> wrote:
> On 03/02/2017 05:38 PM, Arnd Bergmann wrote:
>>
>> This attempts a rewrite of the two macros, using a simpler implementation
>> for the most common case of having a naturally aligned 1, 2, 4, or (on
>> 64-bit architectures) 8  byte object that can be accessed with a single
>> instruction.  For these, we go back to a volatile pointer dereference
>> that we had with the ACCESS_ONCE macro.
>
> We had changed that back then because gcc 4.6 and 4.7 had a bug that could
> removed the volatile statement on aggregate types like the following one
>
> union ipte_control {
>         unsigned long val;
>         struct {
>                 unsigned long k  : 1;
>                 unsigned long kh : 31;
>                 unsigned long kg : 32;
>         };
> };
>
> See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145
>
> If I see that right, your __ALIGNED_WORD(x)
> macro would say that for above structure  sizeof(x) == sizeof(long)) is true,
> so it would fall back to the old volatile cast and might reintroduce the
> old compiler bug?

Ah, right, that's the missing piece. For some reason I didn't find
the reference in the source or the git log.

> Could you maybe you fence your simple macro for anything older than 4.9? After
> all there was no kasan support anyway on these older gcc version.

Yes, that should work, thanks!

     Arnd

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Arnd Bergmann <arnd@arndb.de> - 2017-03-02 18:00 +0100
  Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Christian Borntraeger <borntraeger@de.ibm.com> - 2017-03-02 18:00 +0100
    Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Arnd Bergmann <arnd@arndb.de> - 2017-03-02 19:00 +0100
      Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Arnd Bergmann <arnd@arndb.de> - 2017-03-02 22:50 +0100
        Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Arnd Bergmann <arnd@arndb.de> - 2017-03-03 14:40 +0100
        Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Christian Borntraeger <borntraeger@de.ibm.com> - 2017-03-03 14:40 +0100
          Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Peter Zijlstra <peterz@infradead.org> - 2017-03-03 18:00 +0100
            Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Peter Zijlstra <peterz@infradead.org> - 2017-03-03 18:30 +0100
      Re: [PATCH 02/26] rewrite READ_ONCE/WRITE_ONCE Christian Borntraeger <borntraeger@de.ibm.com> - 2017-03-03 04:20 +0100

csiph-web