From: Thomas Garnier Subject: Re: [RFC 21/22] x86/module: Add support for mcmodel large and PLTs Date: Wed, 19 Jul 2017 08:58:32 -0700 Message-ID: References: <20170718223333.110371-1-thgarnie@google.com> <20170718223333.110371-22-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Cc: "H. Peter Anvin" , Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , Peter Zijlstra , Josh Poimboeuf , Arnd Bergmann , Matthias Kaehlcke , Boris Ostrovsky , Juergen Gross , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Joerg Roedel , Andy Lutomirski , Borislav Petkov , "Kirill A . Shutemov" , Borislav Petkov , Christian Borntraeger , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Tejun Heo , Christ To: Brian Gerst Return-path: List-Post: List-Help: List-Unsubscribe: List-Subscribe: In-Reply-To: List-Id: linux-crypto.vger.kernel.org On Tue, Jul 18, 2017 at 8:59 PM, Brian Gerst wrote: > On Tue, Jul 18, 2017 at 9:35 PM, H. Peter Anvin wrote: >> On 07/18/17 15:33, Thomas Garnier wrote: >>> With PIE support and KASLR extended range, the modules may be further >>> away from the kernel than before breaking mcmodel=kernel expectations. >>> >>> Add an option to build modules with mcmodel=large. The modules generated >>> code will make no assumptions on placement in memory. >>> >>> Despite this option, modules still expect kernel functions to be within >>> 2G and generate relative calls. To solve this issue, the PLT arm64 code >>> was adapted for x86_64. When a relative relocation go outside its range, >>> a dynamic PLT entry is used to correctly jump to the destination. >> >> Why large as opposed to medium or medium-PIC? > > Or for that matter, why not small-PIC? We aren't changing the size of > the kernel to be larger than 2G text or data. Small-PIC would still > allow it to be placed anywhere in the address space, and would > generate far better code. My understanding was that small=PIC and medium=PIC assume that the module code is in the lower 2G of memory. I will do additional testing on the modules to confirm that. > > -- > Brian Gerst -- Thomas