From patchwork Thu Jun 22 18:06:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kees Cook X-Patchwork-Id: 9805063 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 7E86B60329 for ; Thu, 22 Jun 2017 18:07:15 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 755782870B for ; Thu, 22 Jun 2017 18:07:15 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 699712870D; Thu, 22 Jun 2017 18:07:15 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID autolearn=ham version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 157A22870B for ; Thu, 22 Jun 2017 18:07:15 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=XX38nqA0R/+COLWSeuUKoIelkfqy87BhvXIfiu+ielM=; b=jr9LB7v07r04u9ErU3+3T0z84W clTY/TRicBu4AUONciFNVj79GuIC6gSXDRlIM2IBFIOfe+eAVbaSzLzrrxyCOs1MtPpjlhQp6acVV hpAiMku1HtzdpevcJTa4cj0XV2+JybwlmIoCs+LTpry+BpUbRsb47azKS+hoBf1CiYN029XB9Tvcv ccb3MYa6MhmoRMVa2vSdn96hy4rf4le3c1MMlrRR0TCvUz+mNMlWlwOtuH+UBs5YXo2Kwe/iXh7kr 41WKRrXUyQNsGiTY1cuYPFUNs/H5HJa/5rU7fZijobmThm0TRhGDj53j+OkASAMYDeXHmViN+up2R HIJCfFsw==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dO6Vd-0007VA-Dg; Thu, 22 Jun 2017 18:07:13 +0000 Received: from mail-pg0-x231.google.com ([2607:f8b0:400e:c05::231]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dO6VR-0007GA-To for linux-arm-kernel@lists.infradead.org; Thu, 22 Jun 2017 18:07:03 +0000 Received: by mail-pg0-x231.google.com with SMTP id e187so10964234pgc.1 for ; Thu, 22 Jun 2017 11:06:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=h5WUZCIQPXerr5AgpWaB3BqLW06FzOAk1CMhI+LBxsw=; b=QeRkW8Z+n9q5W6OIlI6dcUIbvm3lNYbU8QY2nTiPPojep3IOTGz4d9jefF5FMKdf10 PqKkEXScAxqokztoaFa0+RcJR3zoAoe5C0FegLhoA6o0wFEGsoBJDzXaaCY3EO+Iy4+h JmxcFrxHOUIVMlDEPpGE9qztoLRRCY8ePSqoM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=h5WUZCIQPXerr5AgpWaB3BqLW06FzOAk1CMhI+LBxsw=; b=WIMw27+qf07V8UWSYKo2j85+60JORn9nQDIhRrlNQU2R78qSgIN+hvV9swgYwHzcr3 phQDrOumQmcMI6k9xaHbj/2xM5j8dcKuRDiSEXcadL4TU1Ue8hTX588FT7YBg0K385b0 nBorA2HITnmtkyoNgHhi8rfFTlQGt4tkN5j4R7mrcHIA+Es53f9VUUCsSwhmV72l8+u1 YiHNkpNlKzXVjHz1tacgmKlmdF8jFFuTyhxJSXTH/InWraNPc1h5fedU0zk+pfCBI2qr fjkoluFetTxLJeDCsl/e43Dn707MXYV0nKRU7ANsZGmpm6Kd7YlLerwEdnIt5TgCGNpf 33JQ== X-Gm-Message-State: AKS2vOwZDHZ1tbUdywiN/i6anl7YF5XPpOEnI9sLBtVWYbcX4xgaaBlO LwX/NITveeXT7u5F X-Received: by 10.84.128.68 with SMTP id 62mr4371478pla.184.1498154800160; Thu, 22 Jun 2017 11:06:40 -0700 (PDT) Received: from www.outflux.net (173-164-112-133-Oregon.hfc.comcastbusiness.net. [173.164.112.133]) by smtp.gmail.com with ESMTPSA id r90sm5155993pfj.37.2017.06.22.11.06.39 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 22 Jun 2017 11:06:39 -0700 (PDT) From: Kees Cook To: Andrew Morton Subject: [PATCH 2/4] arm64: Reduce ELF_ET_DYN_BASE Date: Thu, 22 Jun 2017 11:06:30 -0700 Message-Id: <1498154792-49952-3-git-send-email-keescook@chromium.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1498154792-49952-1-git-send-email-keescook@chromium.org> References: <1498154792-49952-1-git-send-email-keescook@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170622_110701_998920_9AB7318B X-CRM114-Status: GOOD ( 13.44 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Pratyush Anand , linux-s390@vger.kernel.org, James Hogan , Kees Cook , Heiko Carstens , kernel-hardening@lists.openwall.com, Catalin Marinas , Will Deacon , Russell King , linux-kernel@vger.kernel.org, Paul Mackerras , Michael Ellerman , Benjamin Herrenschmidt , Martin Schwidefsky , linux-arch@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, Ingo Molnar , linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Now that explicitly executed loaders are loaded in the mmap region, position PIE binaries lower in the address space to avoid possible collisions with mmap or stack regions. For 64-bit, align to 4GB to allow runtimes to use the entire 32-bit address space for 32-bit pointers. Signed-off-by: Kees Cook --- arch/arm64/include/asm/elf.h | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h index 5d1700425efe..f742af8f7c42 100644 --- a/arch/arm64/include/asm/elf.h +++ b/arch/arm64/include/asm/elf.h @@ -113,12 +113,13 @@ #define ELF_EXEC_PAGESIZE PAGE_SIZE /* - * This is the location that an ET_DYN program is loaded if exec'ed. Typical - * use of this is to invoke "./ld.so someprog" to test out a new version of - * the loader. We need to make sure that it is out of the way of the program - * that it will "exec", and that there is sufficient room for the brk. + * This is the base location for PIE (ET_DYN with INTERP) loads. On + * 64-bit, this is raised to 4GB to leave the entire 32-bit address + * space open for things that want to use the area for 32-bit pointers. */ -#define ELF_ET_DYN_BASE (2 * TASK_SIZE_64 / 3) +#define ELF_ET_DYN_BASE (test_thread_flag(TIF_32BIT) ? \ + 0x000400000UL : \ + 0x100000000UL) #ifndef __ASSEMBLY__ @@ -173,8 +174,6 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, #ifdef CONFIG_COMPAT -#define COMPAT_ELF_ET_DYN_BASE (2 * TASK_SIZE_32 / 3) - /* AArch32 registers. */ #define COMPAT_ELF_NGREG 18 typedef unsigned int compat_elf_greg_t;