From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Date: Wed, 4 Oct 2017 14:19:40 -0700 Message-Id: <20171004212003.28296-5-thgarnie@google.com> In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Subject: [kernel-hardening] [RFC v3 04/27] x86: Add macro to get symbol address for PIE support To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Boris Ostrovsky , Alexey Dobriyan , Andrew Morton , Paul Gortmaker , Chris Metcalf , "Paul E . McKenney" , Nicolas Pitre , Borislav Petkov , "Luis R . Rodriguez" , Greg Kroah-Hartman , Christopher Li , Steven Rostedt , Jason Baron , Dou Liyang , "Rafael J . Wysocki" , Mika Westerberg , Lukas Wunner , Masahiro Yamada , Alexei Starovoitov , Daniel Borkmann , Markus Trippelsdorf , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= , Joerg Roedel , Rik van Riel , David Howells , Ard Biesheuvel , Waiman Long , Kyle Huey , Andrey Ryabinin , Jonathan Corbet , Matthew Wilcox , Michal Hocko , Peter Foley , Paul Bolle , Jiri Kosina , Rob Landley , "H . J . Lu" , Baoquan He , =?UTF-8?q?Jan=20H=20=2E=20Sch=C3=B6nherr?= , Daniel Micay Cc: x86@kernel.org, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org, virtualization@lists.linux-foundation.org, xen-devel@lists.xenproject.org, linux-arch@vger.kernel.org, linux-sparse@vger.kernel.org, kvm@vger.kernel.org, linux-doc@vger.kernel.org, kernel-hardening@lists.openwall.com List-ID: Add a new _ASM_GET_PTR macro to fetch a symbol address. It will be used to replace "_ASM_MOV $, %dst" code construct that are not compatible with PIE. Signed-off-by: Thomas Garnier --- arch/x86/include/asm/asm.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arch/x86/include/asm/asm.h b/arch/x86/include/asm/asm.h index c1eadbaf1115..dddcb8a3b777 100644 --- a/arch/x86/include/asm/asm.h +++ b/arch/x86/include/asm/asm.h @@ -55,6 +55,19 @@ # define CC_OUT(c) [_cc_ ## c] "=qm" #endif +/* Macros to get a global variable address with PIE support on 64-bit */ +#ifdef CONFIG_X86_32 +#define __ASM_GET_PTR_PRE(_src) __ASM_FORM_COMMA(movl $##_src) +#else +#ifdef __ASSEMBLY__ +#define __ASM_GET_PTR_PRE(_src) __ASM_FORM_COMMA(leaq (_src)(%rip)) +#else +#define __ASM_GET_PTR_PRE(_src) __ASM_FORM_COMMA(leaq (_src)(%%rip)) +#endif +#endif +#define _ASM_GET_PTR(_src, _dst) \ + __ASM_GET_PTR_PRE(_src) __ASM_FORM(_dst) + /* Exception table entry */ #ifdef __ASSEMBLY__ # define _ASM_EXTABLE_HANDLE(from, to, handler) \ -- 2.14.2.920.gcf0c67979c-goog From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 04/27] x86: Add macro to get symbol address for PIE support Date: Wed, 4 Oct 2017 14:19:40 -0700 Message-ID: <20171004212003.28296-5-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter Bor Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org List-Id: linux-arch.vger.kernel.org QWRkIGEgbmV3IF9BU01fR0VUX1BUUiBtYWNybyB0byBmZXRjaCBhIHN5bWJvbCBhZGRyZXNzLiBJ dCB3aWxsIGJlIHVzZWQKdG8gcmVwbGFjZSAiX0FTTV9NT1YgJDxzeW1ib2w+LCAlZHN0IiBjb2Rl IGNvbnN0cnVjdCB0aGF0IGFyZSBub3QgY29tcGF0aWJsZQp3aXRoIFBJRS4KClNpZ25lZC1vZmYt Ynk6IFRob21hcyBHYXJuaWVyIDx0aGdhcm5pZUBnb29nbGUuY29tPgotLS0KIGFyY2gveDg2L2lu Y2x1ZGUvYXNtL2FzbS5oIHwgMTMgKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDEzIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaCBiL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2FzbS5oCmluZGV4IGMxZWFkYmFmMTExNS4uZGRkY2I4YTNiNzc3 IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaAorKysgYi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9hc20uaApAQCAtNTUsNiArNTUsMTkgQEAKICMgZGVmaW5lIENDX09VVChjKSBb X2NjXyAjIyBjXSAiPXFtIgogI2VuZGlmCiAKKy8qIE1hY3JvcyB0byBnZXQgYSBnbG9iYWwgdmFy aWFibGUgYWRkcmVzcyB3aXRoIFBJRSBzdXBwb3J0IG9uIDY0LWJpdCAqLworI2lmZGVmIENPTkZJ R19YODZfMzIKKyNkZWZpbmUgX19BU01fR0VUX1BUUl9QUkUoX3NyYykgX19BU01fRk9STV9DT01N QShtb3ZsICQjI19zcmMpCisjZWxzZQorI2lmZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBfX0FT TV9HRVRfUFRSX1BSRShfc3JjKSBfX0FTTV9GT1JNX0NPTU1BKGxlYXEgKF9zcmMpKCVyaXApKQor I2Vsc2UKKyNkZWZpbmUgX19BU01fR0VUX1BUUl9QUkUoX3NyYykgX19BU01fRk9STV9DT01NQShs ZWFxIChfc3JjKSglJXJpcCkpCisjZW5kaWYKKyNlbmRpZgorI2RlZmluZSBfQVNNX0dFVF9QVFIo X3NyYywgX2RzdCkgXAorCQlfX0FTTV9HRVRfUFRSX1BSRShfc3JjKSBfX0FTTV9GT1JNKF9kc3Qp CisKIC8qIEV4Y2VwdGlvbiB0YWJsZSBlbnRyeSAqLwogI2lmZGVmIF9fQVNTRU1CTFlfXwogIyBk ZWZpbmUgX0FTTV9FWFRBQkxFX0hBTkRMRShmcm9tLCB0bywgaGFuZGxlcikJCQlcCi0tIAoyLjE0 LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Garnier Subject: [RFC v3 04/27] x86: Add macro to get symbol address for PIE support Date: Wed, 4 Oct 2017 14:19:40 -0700 Message-ID: <20171004212003.28296-5-thgarnie@google.com> References: <20171004212003.28296-1-thgarnie@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: linux-arch@vger.kernel.org, kvm@vger.kernel.org, linux-pm@vger.kernel.org, x86@kernel.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, linux-sparse@vger.kernel.org, linux-crypto@vger.kernel.org, kernel-hardening@lists.openwall.com, xen-devel@lists.xenproject.org To: Herbert Xu , "David S . Miller" , Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Peter Zijlstra , Josh Poimboeuf , Thomas Garnier , Arnd Bergmann , Kees Cook , Matthias Kaehlcke , Tom Lendacky , Andy Lutomirski , "Kirill A . Shutemov" , Borislav Petkov , "Rafael J . Wysocki" , Len Brown , Pavel Machek , Juergen Gross , Chris Wright , Alok Kataria , Rusty Russell , Tejun Heo , Christoph Lameter , Bor Return-path: In-Reply-To: <20171004212003.28296-1-thgarnie@google.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" List-Id: linux-crypto.vger.kernel.org QWRkIGEgbmV3IF9BU01fR0VUX1BUUiBtYWNybyB0byBmZXRjaCBhIHN5bWJvbCBhZGRyZXNzLiBJ dCB3aWxsIGJlIHVzZWQKdG8gcmVwbGFjZSAiX0FTTV9NT1YgJDxzeW1ib2w+LCAlZHN0IiBjb2Rl IGNvbnN0cnVjdCB0aGF0IGFyZSBub3QgY29tcGF0aWJsZQp3aXRoIFBJRS4KClNpZ25lZC1vZmYt Ynk6IFRob21hcyBHYXJuaWVyIDx0aGdhcm5pZUBnb29nbGUuY29tPgotLS0KIGFyY2gveDg2L2lu Y2x1ZGUvYXNtL2FzbS5oIHwgMTMgKysrKysrKysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDEzIGlu c2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaCBiL2Fy Y2gveDg2L2luY2x1ZGUvYXNtL2FzbS5oCmluZGV4IGMxZWFkYmFmMTExNS4uZGRkY2I4YTNiNzc3 IDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9hc20uaAorKysgYi9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9hc20uaApAQCAtNTUsNiArNTUsMTkgQEAKICMgZGVmaW5lIENDX09VVChjKSBb X2NjXyAjIyBjXSAiPXFtIgogI2VuZGlmCiAKKy8qIE1hY3JvcyB0byBnZXQgYSBnbG9iYWwgdmFy aWFibGUgYWRkcmVzcyB3aXRoIFBJRSBzdXBwb3J0IG9uIDY0LWJpdCAqLworI2lmZGVmIENPTkZJ R19YODZfMzIKKyNkZWZpbmUgX19BU01fR0VUX1BUUl9QUkUoX3NyYykgX19BU01fRk9STV9DT01N QShtb3ZsICQjI19zcmMpCisjZWxzZQorI2lmZGVmIF9fQVNTRU1CTFlfXworI2RlZmluZSBfX0FT TV9HRVRfUFRSX1BSRShfc3JjKSBfX0FTTV9GT1JNX0NPTU1BKGxlYXEgKF9zcmMpKCVyaXApKQor I2Vsc2UKKyNkZWZpbmUgX19BU01fR0VUX1BUUl9QUkUoX3NyYykgX19BU01fRk9STV9DT01NQShs ZWFxIChfc3JjKSglJXJpcCkpCisjZW5kaWYKKyNlbmRpZgorI2RlZmluZSBfQVNNX0dFVF9QVFIo X3NyYywgX2RzdCkgXAorCQlfX0FTTV9HRVRfUFRSX1BSRShfc3JjKSBfX0FTTV9GT1JNKF9kc3Qp CisKIC8qIEV4Y2VwdGlvbiB0YWJsZSBlbnRyeSAqLwogI2lmZGVmIF9fQVNTRU1CTFlfXwogIyBk ZWZpbmUgX0FTTV9FWFRBQkxFX0hBTkRMRShmcm9tLCB0bywgaGFuZGxlcikJCQlcCi0tIAoyLjE0 LjIuOTIwLmdjZjBjNjc5NzljLWdvb2cKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK