From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Ellerman Subject: Re: [PATCH 3/4] powerpc: Reduce ELF_ET_DYN_BASE Date: Mon, 26 Jun 2017 23:04:58 +1000 Message-ID: <8737amew79.fsf@concordia.ellerman.id.au> References: <1498154792-49952-1-git-send-email-keescook@chromium.org> <1498154792-49952-4-git-send-email-keescook@chromium.org> <87podvp4q1.fsf@concordia.ellerman.id.au> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from ozlabs.org ([103.22.144.67]:47889 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751453AbdFZNFJ (ORCPT ); Mon, 26 Jun 2017 09:05:09 -0400 In-Reply-To: Sender: linux-arch-owner@vger.kernel.org List-ID: To: Kees Cook Cc: Andrew Morton , Russell King , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , James Hogan , Pratyush Anand , Ingo Molnar , "linux-arm-kernel@lists.infradead.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-s390@vger.kernel.org" , LKML , linux-arch , kernel-hardening@lists.openwall.c Kees Cook writes: > On Fri, Jun 23, 2017 at 12:01 AM, Michael Ellerman wrote: >> Kees Cook writes: >> >>> 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. >> >> The change log and subject are a bit out of whack with the actual patch >> because previously we used 512MB. >> >> How about? >> >> powerpc: Move ELF_ET_DYN_BASE to 4GB / 4MB >> >> Now that explicitly executed loaders are loaded in the mmap region, >> we have more freedom to decide where we position PIE binaries 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. On 32-bit use 4MB. > > Good idea, thanks. I'll resend the series with the commit logs updated. > >> Is there any particular reasoning behind the 4MB value on 32-bit? > > So, I've dug around a bit on this, and I *think* the rationale is to > avoid mapping a possible 4MB page table entry when it won't be using > at least a portion near the lower end (NULL address area covered > blocked by mmap_min_addr). It seems to be mainly tradition, though. OK, that is obscure, especially for CPUs that don't have a 4MB page size. But consistency across arches is probably best regardless. cheers From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ozlabs.org ([103.22.144.67]:47889 "EHLO ozlabs.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751453AbdFZNFJ (ORCPT ); Mon, 26 Jun 2017 09:05:09 -0400 From: Michael Ellerman Subject: Re: [PATCH 3/4] powerpc: Reduce ELF_ET_DYN_BASE In-Reply-To: References: <1498154792-49952-1-git-send-email-keescook@chromium.org> <1498154792-49952-4-git-send-email-keescook@chromium.org> <87podvp4q1.fsf@concordia.ellerman.id.au> Date: Mon, 26 Jun 2017 23:04:58 +1000 Message-ID: <8737amew79.fsf@concordia.ellerman.id.au> MIME-Version: 1.0 Content-Type: text/plain Sender: linux-arch-owner@vger.kernel.org List-ID: To: Kees Cook Cc: Andrew Morton , Russell King , Catalin Marinas , Will Deacon , Benjamin Herrenschmidt , Paul Mackerras , Martin Schwidefsky , Heiko Carstens , James Hogan , Pratyush Anand , Ingo Molnar , "linux-arm-kernel@lists.infradead.org" , "linuxppc-dev@lists.ozlabs.org" , "linux-s390@vger.kernel.org" , LKML , linux-arch , "kernel-hardening@lists.openwall.com" Message-ID: <20170626130458.pERhW3G532RIpPuNL-JzyguzkkxDOqFbla3q5_KbU1U@z> Kees Cook writes: > On Fri, Jun 23, 2017 at 12:01 AM, Michael Ellerman wrote: >> Kees Cook writes: >> >>> 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. >> >> The change log and subject are a bit out of whack with the actual patch >> because previously we used 512MB. >> >> How about? >> >> powerpc: Move ELF_ET_DYN_BASE to 4GB / 4MB >> >> Now that explicitly executed loaders are loaded in the mmap region, >> we have more freedom to decide where we position PIE binaries 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. On 32-bit use 4MB. > > Good idea, thanks. I'll resend the series with the commit logs updated. > >> Is there any particular reasoning behind the 4MB value on 32-bit? > > So, I've dug around a bit on this, and I *think* the rationale is to > avoid mapping a possible 4MB page table entry when it won't be using > at least a portion near the lower end (NULL address area covered > blocked by mmap_min_addr). It seems to be mainly tradition, though. OK, that is obscure, especially for CPUs that don't have a 4MB page size. But consistency across arches is probably best regardless. cheers