Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933736AbdGTARL convert rfc822-to-8bit (ORCPT ); Wed, 19 Jul 2017 20:17:11 -0400 Received: from terminus.zytor.com ([65.50.211.136]:60193 "EHLO mail.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932791AbdGTARI (ORCPT ); Wed, 19 Jul 2017 20:17:08 -0400 From: "H. Peter Anvin" Message-Id: <201707192348.v6JNm8Rg003916@mail.zytor.com> Date: Wed, 19 Jul 2017 16:47:45 -0700 User-Agent: K-9 Mail for Android In-Reply-To: References: <20170718223333.110371-1-thgarnie@google.com> <20170718223333.110371-7-thgarnie@google.com> <0cdd02e1-8bf2-41cd-f085-c338c2fd8e25@zytor.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8BIT Subject: Re: [RFC 06/22] kvm: Adapt assembly for PIE support To: Ard Biesheuvel CC: Thomas Garnier , Brian Gerst , 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 , Christoph Lameter , Kees Cook , Paul.Gortmaker@zytor.com Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2821 Lines: 44 ,Chris Metcalf ,"Paul E . McKenney" ,Andrew Morton ,Christopher Li ,Dou Liyang ,Masahiro Yamada ,Daniel Borkmann ,Markus Trippelsdorf ,Peter Foley ,Steven Rostedt ,Tim Chen ,Catalin Marinas ,Matthew Wilcox ,Michal Hocko ,Rob Landley ,Jiri Kosina ,"H . J . Lu" ,Paul Bolle ,Baoquan He ,Daniel Micay ,the arch/x86 maintainers ,"linux-crypto@vger.kernel.org" ,Linux Kernel Mailing List ,xen-devel@lists.xenproject.org,kvm list ,linux-pm ,linux-arch ,Linux-Sparse ,Kernel Hardening From: hpa@zytor.com Message-ID: <83BA7600-BC8D-4C91-812C-DD2A0BF4474B@zytor.com> On July 19, 2017 3:58:07 PM PDT, Ard Biesheuvel wrote: >On 19 July 2017 at 23:27, H. Peter Anvin wrote: >> On 07/19/17 08:40, Thomas Garnier wrote: >>>> >>>> This doesn't look right. It's accessing a per-cpu variable. The >>>> per-cpu section is an absolute, zero-based section and not subject >to >>>> relocation. >>> >>> PIE does not respect the zero-based section, it tries to have >>> everything relative. Patch 16/22 also adapt per-cpu to work with PIE >>> (while keeping the zero absolute design by default). >>> >> >> This is silly. The right thing is for PIE is to be explicitly >absolute, >> without (%rip). The use of (%rip) memory references for percpu is >just >> an optimization. >> > >Sadly, there is an issue in binutils that may prevent us from doing >this as cleanly as we would want. > >For historical reasons, bfd.ld emits special symbols like >__GLOBAL_OFFSET_TABLE__ as absolute symbols with a section index of >SHN_ABS, even though it is quite obvious that they are relative like >any other symbol that points into the image. Unfortunately, this means >that binutils needs to emit R_X86_64_RELATIVE relocations even for >SHN_ABS symbols, which means we lose the ability to use both absolute >and relocatable symbols in the same PIE image (unless the reloc tool >can filter them out) > >More info here: >https://sourceware.org/bugzilla/show_bug.cgi?id=19818 The reloc tool already has the ability to filter symbols. -- Sent from my Android device with K-9 Mail. Please excuse my brevity.