From: Ingo Molnar Subject: Re: x86: PIE support and option to extend KASLR randomization Date: Thu, 17 Aug 2017 10:09:20 +0200 Message-ID: <20170817080920.5ljlkktngw2cisfg@gmail.com> References: <20170810172615.51965-1-thgarnie@google.com> <20170811124127.kkb5pnkljz4umxuj@gmail.com> <20170815075609.mmzbfwritjzvrpsn@gmail.com> <20170816151235.oamkdva6cwpc4cex@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: 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 =?utf-8?B?S3LEjW3DocWZ?= , Joerg Roedel , Tom Lendacky , Andy Lutomirski , Borislav Petkov , Brian Gerst , "Kirill A . Shutemov" , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Tejun Heo , Christoph Lamete To: Thomas Garnier Return-path: List-Post: List-Help: List-Unsubscribe: List-Subscribe: Sender: Ingo Molnar Content-Disposition: inline In-Reply-To: List-Id: linux-crypto.vger.kernel.org * Thomas Garnier wrote: > > > -model=small/medium assume you are on the low 32-bit. It generates > > > instructions where the virtual addresses have the high 32-bit to be zero. > > > > How are these assumptions hardcoded by GCC? Most of the instructions should be > > relocatable straight away, as most call/jump/branch instructions are > > RIP-relative. > > I think PIE is capable to use relative instructions well. mcmodel=large assumes > symbols can be anywhere. So if the numbers in your changelog and Kconfig text cannot be trusted, there's this description of the size impact which I suspect is less susceptible to measurement error: + 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. ... but describing a 1-2% kernel text size increase as "slightly more assembly" shows a gratituous disregard to kernel code generation quality! In reality that's a huge size increase that in most cases will almost directly transfer to a 1-2% slowdown for kernel intense workloads. Where does that size increase come from, if PIE is capable of using relative instructins well? Does it come from the loss of a generic register and the resulting increase in register pressure, stack spills, etc.? So I'm still unhappy about this all, and about the attitude surrounding it. Thanks, Ingo