Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Tue, 15 Aug 2017 08:15:30 -0400
From: Jordan Glover <>
To: Ingo Molnar <>
Cc: Thomas Garnier <>, Herbert Xu <>, Peter Zijlstra <>, Arnd Bergmann <>, Tom Lendacky <>, Andy Lutomirski <>, Len Brown <>, Pavel Machek <>, Tejun Heo <>, Christoph Lameter <>, Chris Metcalf <>, Markus Trippelsdorf <>, Kees Cook <>, Rik van Riel <>, David Howells <>, Waiman Long <>, Peter Foley <>, Tim Chen <>, Ard Biesheuvel <>, Michal Hocko <>, "H . J . Lu" <>, Daniel Micay <>, LKML <>, Kernel Hardening <>
Subject: Re: Re: x86: PIE support and option to extend KASLR randomization

I write to put different perspective into the topic. I'm glad that kernel developers care about performance optimizations and I see how 10% overhead can be a problem for some. On the other hand last ten years gave us 1000% faster hardware which trumps anything software can do. For many users like us performance isn't a problem, we have plenty of it and if we haven't we can buy it. It can be money problem, not software engineering problem.

For security it's not that easy for us. We can't buy more of it as it's impossible to buy something that doesn't exist. All new proposed kernel security features are either disabled by default or have option to disable them. Users who prioritizes performance can disable every costly security feature that exist in kernel, they simply doesn't matter for them. Users who prioritize security can enable those security options but they can't enable those which aren't available at all which means they're often left with nothing.

I hope you see that those two kind of users and their priorities are treated very unequally in current kernel development. On the one hand kernel developers for years made many painstaking optimizations, on the other hand security related work of other developers which is same as hard get constant opposition and it's often completely rejected.

I believe there is room for both performance and security in kernel as long as they have optionality built in . My point is that kernel developers shouldn't "a priori" decide what's more important as there are more different usecases and needs they can imagine.

> -------- Original Message --------
> Subject: [kernel-hardening] Re: x86: PIE support and option to extend KASLR randomization
> Local Time: August 15, 2017 7:56 AM
> UTC Time: August 15, 2017 7:56 AM
> From:
> To: Thomas Garnier <>
> Herbert Xu <>, David S . Miller <>, Thomas Gleixner <>, Ingo Molnar <>, H . Peter Anvin <>, Peter Zijlstra <>, Josh Poimboeuf <>, Arnd Bergmann <>, Matthias Kaehlcke <>, Boris Ostrovsky <>, Juergen Gross <>, Paolo Bonzini <>, Radim Krčmář <>, Joerg Roedel <>, Tom Lendacky <>, Andy Lutomirski <>, Borislav Petkov <>, Brian Gerst <>, Kirill A . Shutemov <>, Rafael J . Wysocki <>, Len Brown <>, Pavel Machek <>, Tejun Heo <>, Christoph Lameter <>, Paul Gortmaker <>, Chris Metcalf <>, Andrew Morton <>, Paul E . McKenney <>, Nicolas Pitre <>, Christopher Li <>, Rafael J . Wysocki <>, Lukas Wunner <>, Mika Westerberg <>, Dou Liyang <>, Daniel Borkmann <>, Alexei Starovoitov <>, Masahiro Yamada <>, Markus Trippelsdorf <>, Steven Rostedt <>, Kees Cook <>, Rik van Riel <>, David Howells <>, Waiman Long <>, Kyle Huey <>, Peter Foley <>, Tim Chen <>, Catalin Marinas <>, Ard Biesheuvel <>, Michal Hocko <>, Matthew Wilcox <>, H . J . Lu <>, Paul Bolle <>, Rob Landley <>, Baoquan He <>, Daniel Micay <>, the arch/x86 maintainers <>,, LKML <>,, kvm list <>, Linux PM list <>, linux-arch <>,, Kernel Hardening <>, Linus Torvalds <>, Peter Zijlstra <>, Borislav Petkov <>
> * Thomas Garnier <> wrote:
>> > Do these changes get us closer to being able to build the kernel as truly
>> > position independent, i.e. to place it anywhere in the valid x86-64 address
>> > space? Or any other advantages?
>> Yes, PIE allows us to put the kernel anywhere in memory. It will allow us to
>> have a full randomized address space where position and order of sections are
>> completely random. There is still some work to get there but being able to build
>> a PIE kernel is a significant step.
> So I _really_ dislike the whole PIE approach, because of the huge slowdown:
> + bool "Increase the randomization range of the kernel image"
> + depends on X86_64 && RANDOMIZE_BASE
> + select X86_PIE
> + select X86_MODULE_PLTS if MODULES
> + default n
> + ---help---
> + Build the kernel as a Position Independent Executable (PIE) and
> + increase the available randomization range from 1GB to 3GB.
> +
> + This option impacts performance on kernel CPU intensive workloads up
> + to 10% due to PIE generated code. Impact on user-mode processes and
> + typical usage would be significantly less (0.50% when you build the
> + kernel).
> +
> + The kernel and modules will generate slightly more assembly (1 to 2%
> + increase on the .text sections). The vmlinux binary will be
> + significantly smaller due to less relocations.
> To put 10% kernel overhead into perspective: enabling this option wipes out about
> 5-10 years worth of painstaking optimizations we"ve done to keep the kernel fast
> ... (!!)
> I think the fundamental flaw is the assumption that we need a PIE executable to
> have a freely relocatable kernel on 64-bit CPUs.
> Have you considered a kernel with -mcmodel=small (or medium) instead of -fpie
> -mcmodel=large? We can pick a random 2GB window in the (non-kernel) canonical
> x86-64 address space to randomize the location of kernel text. The location of
> modules can be further randomized within that 2GB window.
> It should have far less performance impact than the register-losing and
> overhead-inducing -fpie / -mcmodel=large (for modules) execution models.
> My quick guess is tha the performance impact might be close to zero in fact.
> Thanks,
> Ingo
Content of type "text/html" skipped

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.