From: "H. Peter Anvin" Subject: Re: x86: PIE support and option to extend KASLR randomization Date: Fri, 22 Sep 2017 11:27:07 -0700 Message-ID: References: <20170810172615.51965-1-thgarnie@google.com> <20170811124127.kkb5pnkljz4umxuj@gmail.com> <20170815075609.mmzbfwritjzvrpsn@gmail.com> <20170816151235.oamkdva6cwpc4cex@gmail.com> <20170821133222.2ek6bhqgdeoymxsg@hirez.programming.kicks-ass.net> <20170821142854.dmuusnbc2tsrai3v@hirez.programming.kicks-ass.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Cc: Thomas Garnier , Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Josh Poimboeuf , Arnd Bergmann , Matthias Kaehlcke , Boris Ostrovsky , Juergen Gross , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Joerg Roedel , Tom Lendacky , Andy Lutomirski , Borislav Petkov , Brian Gerst , "Kirill A . Shutemov" , "Rafael J . Wysocki" , Len Brown , Pavel Mache To: Peter Zijlstra , Ingo Molnar Return-path: List-Post: List-Help: List-Unsubscribe: List-Subscribe: In-Reply-To: <20170821142854.dmuusnbc2tsrai3v@hirez.programming.kicks-ass.net> Content-Language: en-US List-Id: linux-crypto.vger.kernel.org On 08/21/17 07:28, Peter Zijlstra wrote: > > Ah, I see, this is large mode and that needs to use MOVABS to load 64bit > immediates. Still, small RIP relative should be able to live at any > point as long as everything lives inside the same 2G relative range, so > would still allow the goal of increasing the KASLR range. > > So I'm not seeing how we need large mode for that. That said, after > reading up on all this, RIP relative will not be too pretty either, > while CALL is naturally RIP relative, data still needs an explicit %rip > offset, still loads better than the large model. > The large model makes no sense whatsoever. I think what we're actually looking for is the small-PIC model. Ingo asked: > I.e. is there no GCC code generation mode where code can be placed anywhere in the > canonical address space, yet call and jump distance is within 31 bits so that the > generated code is fast? That's the small-PIC model. I think if all symbols are forced to hidden then it won't even need a GOT/PLT. We do need to consider how we want modules to fit into whatever model we choose, though. They can be adjacent, or we could go with a more traditional dynamic link model where the modules can be separate, and chained together with the main kernel via the GOT. -hpa