From: Brian Gerst Subject: Re: [RFC 21/22] x86/module: Add support for mcmodel large and PLTs Date: Wed, 19 Jul 2017 13:34:46 -0400 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: Thomas Garnier Return-path: List-Post: List-Help: List-Unsubscribe: List-Subscribe: In-Reply-To: List-Id: linux-crypto.vger.kernel.org On Wed, Jul 19, 2017 at 11:58 AM, Thomas Garnier wrote: > 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. That is only for small/medium absolute (non-PIC) code. Think about userspace shared libraries. They are not limited to being mapped in the lower 2G of the address space. -- Brian Gerst