lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Sun, 16 Dec 2018 02:33:39 +0000
From:   Nadav Amit <namit@...are.com>
To:     Masahiro Yamada <yamada.masahiro@...ionext.com>
CC:     Peter Zijlstra <peterz@...radead.org>,
        Ingo Molnar <mingo@...hat.com>,
        Thomas Gleixner <tglx@...utronix.de>,
        Borislav Petkov <bp@...en8.de>,
        "H . Peter Anvin" <hpa@...or.com>, X86 ML <x86@...nel.org>,
        Richard Biener <rguenther@...e.de>,
        Logan Gunthorpe <logang@...tatee.com>,
        Sedat Dilek <sedat.dilek@...il.com>,
        Segher Boessenkool <segher@...nel.crashing.org>,
        linux-arch <linux-arch@...r.kernel.org>,
        Arnd Bergmann <arnd@...db.de>,
        Luc Van Oostenryck <luc.vanoostenryck@...il.com>,
        Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
        "virtualization@...ts.linux-foundation.org" 
        <virtualization@...ts.linux-foundation.org>,
        Michal Marek <michal.lkml@...kovi.net>,
        "linux-sparse@...r.kernel.org" <linux-sparse@...r.kernel.org>,
        Alok Kataria <akataria@...are.com>,
        Juergen Gross <jgross@...e.com>,
        Andy Lutomirski <luto@...nel.org>,
        Linux Kbuild mailing list <linux-kbuild@...r.kernel.org>
Subject: Re: [PATCH] kbuild, x86: revert macros in extended asm workarounds

> On Dec 14, 2018, at 4:51 PM, Masahiro Yamada <yamada.masahiro@...ionext.com> wrote:
> 
> Hi Peter,
> 
> On Thu, Dec 13, 2018 at 7:53 PM Peter Zijlstra <peterz@...radead.org> wrote:
>> On Thu, Dec 13, 2018 at 06:17:41PM +0900, Masahiro Yamada wrote:
>>> Revert the following commits:
>>> 
>>> - 5bdcd510c2ac9efaf55c4cbd8d46421d8e2320cd
>>>  ("x86/jump-labels: Macrofy inline assembly code to work around GCC inlining bugs")
>>> 
>>> - d5a581d84ae6b8a4a740464b80d8d9cf1e7947b2
>>>  ("x86/cpufeature: Macrofy inline assembly code to work around GCC inlining bugs")
>>> 
>>> - 0474d5d9d2f7f3b11262f7bf87d0e7314ead9200.
>>>  ("x86/extable: Macrofy inline assembly code to work around GCC inlining bugs")
>>> 
>>> - 494b5168f2de009eb80f198f668da374295098dd.
>>>  ("x86/paravirt: Work around GCC inlining bugs when compiling paravirt ops")
>>> 
>>> - f81f8ad56fd1c7b99b2ed1c314527f7d9ac447c6.
>>>  ("x86/bug: Macrofy the BUG table section handling, to work around GCC inlining bugs")
>>> 
>>> - 77f48ec28e4ccff94d2e5f4260a83ac27a7f3099.
>>>  ("x86/alternatives: Macrofy lock prefixes to work around GCC inlining bugs")
>>> 
>>> - 9e1725b410594911cc5981b6c7b4cea4ec054ca8.
>>>  ("x86/refcount: Work around GCC inlining bug")
>>>  (Conflicts: arch/x86/include/asm/refcount.h)
>>> 
>>> - c06c4d8090513f2974dfdbed2ac98634357ac475.
>>>  ("x86/objtool: Use asm macros to work around GCC inlining bugs")
>>> 
>>> - 77b0bf55bc675233d22cd5df97605d516d64525e.
>>>  ("kbuild/Makefile: Prepare for using macros in inline assembly code to work around asm() related GCC inlining bugs")
>> 
>> I don't think we want to blindly revert all that. Some of them actually
>> made sense and did clean up things irrespective of the asm-inline issue.
>> 
>> In particular I like the jump-label one.
> 
> [1] The #error message is unnecessary.
> 
> [2] keep STATC_BRANCH_NOP/JMP instead of STATIC_JUMP_IF_TRUE/FALSE
> 
> 
> 
> In v2, I will make sure to not re-add [1].
> I am not sure about [2].
> 
> 
> Do you mean only [1],
> or both of them?
> 
> 
> 
>> The cpufeature one OTOh, yeah,
>> I'd love to get that reverted.
>> 
>> And as a note; the normal commit quoting style is:
>> 
>>  d5a581d84ae6 ("x86/cpufeature: Macrofy inline assembly code to work around GCC inlining bugs")
> 
> 
> OK. I will do so in v2.

I recommend to do the following for v2:

1. Run some static measurements (e.g., function sizes, number of function
symbols) to ensure that GCC works as it should. If possible, run small
performance evaluations. IIRC, I saw small but consistent performance
difference when I ran a loop with mprotect() that kept changing permissions.
This was due to PV MMU functions that caused inlining mess.

2. Break the patch into separate patches, based on the original patch-set
order (reversed). This is the common practice, which allows people to review
patches, perform bisections, and revert when needed.

3. Cc the relevant people who ack'd the original patches, e.g., Kees Cook,
who’s on top of the reference-counters and Linus, who proposed this
approach.

In general, I think that from the start it was clear that the motivation for
the patch-set is not just performance and also better code. For example, I
see no reason to revert the PV-changes or the lock-prefix changes that
improved the code readability.

Regards,
Nadav

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ