Date: Thu, 21 Sep 2017 14:21:28 -0700 From: Thomas Garnier <thgarnie@...gle.com> To: Ard Biesheuvel <ard.biesheuvel@...aro.org> Cc: Ingo Molnar <mingo@...nel.org>, Herbert Xu <herbert@...dor.apana.org.au>, "David S . Miller" <davem@...emloft.net>, Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...hat.com>, "H . Peter Anvin" <hpa@...or.com>, Peter Zijlstra <peterz@...radead.org>, Josh Poimboeuf <jpoimboe@...hat.com>, Arnd Bergmann <arnd@...db.de>, Matthias Kaehlcke <mka@...omium.org>, Boris Ostrovsky <boris.ostrovsky@...cle.com>, Juergen Gross <jgross@...e.com>, Paolo Bonzini <pbonzini@...hat.com>, Radim Krčmář <rkrcmar@...hat.com>, Joerg Roedel <joro@...tes.org>, Tom Lendacky <thomas.lendacky@....com>, Andy Lutomirski <luto@...nel.org>, Borislav Petkov <bp@...e.de>, Brian Gerst <brgerst@...il.com>, "Kirill A . Shutemov" <kirill.shutemov@...ux.intel.com>, "Rafael J . Wysocki" <rjw@...ysocki.net>, Len Brown <len.brown@...el.com>, Pavel Machek <pavel@....cz>, Tejun Heo <tj@...nel.org>, Christoph Lameter <cl@...ux.com>, Paul Gortmaker <paul.gortmaker@...driver.com>, Chris Metcalf <cmetcalf@...lanox.com>, Andrew Morton <akpm@...ux-foundation.org>, "Paul E . McKenney" <paulmck@...ux.vnet.ibm.com>, Nicolas Pitre <nicolas.pitre@...aro.org>, Christopher Li <sparse@...isli.org>, "Rafael J . Wysocki" <rafael.j.wysocki@...el.com>, Lukas Wunner <lukas@...ner.de>, Mika Westerberg <mika.westerberg@...ux.intel.com>, Dou Liyang <douly.fnst@...fujitsu.com>, Daniel Borkmann <daniel@...earbox.net>, Alexei Starovoitov <ast@...nel.org>, Masahiro Yamada <yamada.masahiro@...ionext.com>, Markus Trippelsdorf <markus@...ppelsdorf.de>, Steven Rostedt <rostedt@...dmis.org>, Kees Cook <keescook@...omium.org>, Rik van Riel <riel@...hat.com>, David Howells <dhowells@...hat.com>, Waiman Long <longman@...hat.com>, Kyle Huey <me@...ehuey.com>, Peter Foley <pefoley2@...oley.com>, Tim Chen <tim.c.chen@...ux.intel.com>, Catalin Marinas <catalin.marinas@....com>, Michal Hocko <mhocko@...e.com>, Matthew Wilcox <mawilcox@...rosoft.com>, "H . J . Lu" <hjl.tools@...il.com>, Paul Bolle <pebolle@...cali.nl>, Rob Landley <rob@...dley.net>, Baoquan He <bhe@...hat.com>, Daniel Micay <danielmicay@...il.com>, "the arch/x86 maintainers" <x86@...nel.org>, Linux Crypto Mailing List <linux-crypto@...r.kernel.org>, LKML <linux-kernel@...r.kernel.org>, xen-devel <xen-devel@...ts.xenproject.org>, kvm list <kvm@...r.kernel.org>, Linux PM list <linux-pm@...r.kernel.org>, linux-arch <linux-arch@...r.kernel.org>, Sparse Mailing-list <linux-sparse@...r.kernel.org>, Kernel Hardening <kernel-hardening@...ts.openwall.com>, Linus Torvalds <torvalds@...ux-foundation.org>, Peter Zijlstra <a.p.zijlstra@...llo.nl>, Borislav Petkov <bp@...en8.de> Subject: Re: x86: PIE support and option to extend KASLR randomization On Thu, Sep 21, 2017 at 9:10 AM, Ard Biesheuvel <ard.biesheuvel@...aro.org> wrote: > > On 21 September 2017 at 08:59, Ingo Molnar <mingo@...nel.org> wrote: > > > > ( Sorry about the delay in answering this. I could blame the delay on the merge > > window, but in reality I've been procrastinating this is due to the permanent, > > non-trivial impact PIE has on generated C code. ) > > > > * Thomas Garnier <thgarnie@...gle.com> wrote: > > > >> 1) PIE sometime needs two instructions to represent a single > >> instruction on mcmodel=kernel. > > > > What again is the typical frequency of this occurring in an x86-64 defconfig > > kernel, with the very latest GCC? > > > > Also, to make sure: which unwinder did you use for your measurements, > > frame-pointers or ORC? Please use ORC only for future numbers, as > > frame-pointers is obsolete from a performance measurement POV. > > > >> 2) GCC does not optimize switches in PIE in order to reduce relocations: > > > > Hopefully this can either be fixed in GCC or at least influenced via a compiler > > switch in the future. > > > > There are somewhat related concerns in the ARM world, so it would be > good if we could work with the GCC developers to get a more high level > and arch neutral command line option (-mkernel-pie? sounds yummy!) > that stops the compiler from making inferences that only hold for > shared libraries and/or other hosted executables (GOT indirections, > avoiding text relocations etc). That way, we will also be able to drop > the 'hidden' visibility override at some point, which we currently > need to prevent the compiler from redirecting all global symbol > references via entries in the GOT. My plan was to add a -mtls-reg=<fs|gs> to switch the default segment register for stack cookies but I can see great benefits in having a more general kernel flag that would allow to get rid of the GOT and PLT when you are building position independent code for the kernel. It could also include optimizations like folding switch tables etc... Should we start a separate discussion on that? Anyone that would be more experienced than I to push that to gcc & clang upstream? > > All we really need is the ability to move the image around in virtual > memory, and things like reducing the CoW footprint or enabling ELF > symbol preemption are completely irrelevant for us. -- Thomas
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.