All of lore.kernel.org
 help / color / mirror / Atom feed
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 3/4] arm64: mm: support ARCH_MMAP_RND_BITS.
Date: Mon, 23 Nov 2015 15:04:59 +0000	[thread overview]
Message-ID: <20151123150459.GD4236@arm.com> (raw)
In-Reply-To: <1447888808-31571-4-git-send-email-dcashman@android.com>

On Wed, Nov 18, 2015 at 03:20:07PM -0800, Daniel Cashman wrote:
> From: dcashman <dcashman@google.com>
> 
> arm64: arch_mmap_rnd() uses STACK_RND_MASK to generate the
> random offset for the mmap base address.  This value represents a
> compromise between increased ASLR effectiveness and avoiding
> address-space fragmentation. Replace it with a Kconfig option, which
> is sensibly bounded, so that platform developers may choose where to
> place this compromise. Keep default values as new minimums.
> 
> Signed-off-by: Daniel Cashman <dcashman@google.com>
> ---
>  arch/arm64/Kconfig   | 23 +++++++++++++++++++++++
>  arch/arm64/mm/mmap.c |  6 ++++--
>  2 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 9ac16a4..be38e4c 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -51,6 +51,8 @@ config ARM64
>  	select HAVE_ARCH_JUMP_LABEL
>  	select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP
>  	select HAVE_ARCH_KGDB
> +	select HAVE_ARCH_MMAP_RND_BITS
> +	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
>  	select HAVE_ARCH_SECCOMP_FILTER
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_BPF_JIT
> @@ -104,6 +106,27 @@ config ARCH_PHYS_ADDR_T_64BIT
>  config MMU
>  	def_bool y
>  
> +config ARCH_MMAP_RND_BITS_MIN
> +       default 15 if ARM64_64K_PAGES
> +       default 19
> +
> +config ARCH_MMAP_RND_BITS_MAX
> +       default 20 if ARM64_64K_PAGES && ARCH_VA_BITS=39
> +       default 24 if ARCH_VA_BITS=39
> +       default 23 if ARM64_64K_PAGES && ARCH_VA_BITS=42
> +       default 27 if ARCH_VA_BITS=42
> +       default 29 if ARM64_64K_PAGES && ARCH_VA_BITS=48
> +       default 33 if ARCH_VA_BITS=48
> +       default 15 if ARM64_64K_PAGES
> +       default 19
> +
> +config ARCH_MMAP_RND_COMPAT_BITS_MIN
> +       default 7 if ARM64_64K_PAGES
> +       default 11

FYI: we now support 16k pages too, so this might need updating. It would
be much nicer if this was somehow computed rather than have the results
all open-coded like this.

Will

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: Daniel Cashman <dcashman@android.com>
Cc: linux-kernel@vger.kernel.org, linux@arm.linux.org.uk,
	akpm@linux-foundation.org, keescook@chromium.org,
	mingo@kernel.org, linux-arm-kernel@lists.infradead.org,
	corbet@lwn.net, dzickus@redhat.com, ebiederm@xmission.com,
	xypron.glpk@gmx.de, jpoimboe@redhat.com,
	kirill.shutemov@linux.intel.com, n-horiguchi@ah.jp.nec.com,
	aarcange@redhat.com, mgorman@suse.de, tglx@linutronix.de,
	rientjes@google.com, linux-mm@kvack.org,
	linux-doc@vger.kernel.org, salyzyn@android.com, jeffv@google.com,
	nnk@google.com, catalin.marinas@arm.com, hpa@zytor.com,
	x86@kernel.org, hecmargi@upv.es, bp@suse.de, dcashman@google.com
Subject: Re: [PATCH v3 3/4] arm64: mm: support ARCH_MMAP_RND_BITS.
Date: Mon, 23 Nov 2015 15:04:59 +0000	[thread overview]
Message-ID: <20151123150459.GD4236@arm.com> (raw)
In-Reply-To: <1447888808-31571-4-git-send-email-dcashman@android.com>

On Wed, Nov 18, 2015 at 03:20:07PM -0800, Daniel Cashman wrote:
> From: dcashman <dcashman@google.com>
> 
> arm64: arch_mmap_rnd() uses STACK_RND_MASK to generate the
> random offset for the mmap base address.  This value represents a
> compromise between increased ASLR effectiveness and avoiding
> address-space fragmentation. Replace it with a Kconfig option, which
> is sensibly bounded, so that platform developers may choose where to
> place this compromise. Keep default values as new minimums.
> 
> Signed-off-by: Daniel Cashman <dcashman@google.com>
> ---
>  arch/arm64/Kconfig   | 23 +++++++++++++++++++++++
>  arch/arm64/mm/mmap.c |  6 ++++--
>  2 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 9ac16a4..be38e4c 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -51,6 +51,8 @@ config ARM64
>  	select HAVE_ARCH_JUMP_LABEL
>  	select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP
>  	select HAVE_ARCH_KGDB
> +	select HAVE_ARCH_MMAP_RND_BITS
> +	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
>  	select HAVE_ARCH_SECCOMP_FILTER
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_BPF_JIT
> @@ -104,6 +106,27 @@ config ARCH_PHYS_ADDR_T_64BIT
>  config MMU
>  	def_bool y
>  
> +config ARCH_MMAP_RND_BITS_MIN
> +       default 15 if ARM64_64K_PAGES
> +       default 19
> +
> +config ARCH_MMAP_RND_BITS_MAX
> +       default 20 if ARM64_64K_PAGES && ARCH_VA_BITS=39
> +       default 24 if ARCH_VA_BITS=39
> +       default 23 if ARM64_64K_PAGES && ARCH_VA_BITS=42
> +       default 27 if ARCH_VA_BITS=42
> +       default 29 if ARM64_64K_PAGES && ARCH_VA_BITS=48
> +       default 33 if ARCH_VA_BITS=48
> +       default 15 if ARM64_64K_PAGES
> +       default 19
> +
> +config ARCH_MMAP_RND_COMPAT_BITS_MIN
> +       default 7 if ARM64_64K_PAGES
> +       default 11

FYI: we now support 16k pages too, so this might need updating. It would
be much nicer if this was somehow computed rather than have the results
all open-coded like this.

Will

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Will Deacon <will.deacon@arm.com>
To: Daniel Cashman <dcashman@android.com>
Cc: linux-kernel@vger.kernel.org, linux@arm.linux.org.uk,
	akpm@linux-foundation.org, keescook@chromium.org,
	mingo@kernel.org, linux-arm-kernel@lists.infradead.org,
	corbet@lwn.net, dzickus@redhat.com, ebiederm@xmission.com,
	xypron.glpk@gmx.de, jpoimboe@redhat.com,
	kirill.shutemov@linux.intel.com, n-horiguchi@ah.jp.nec.com,
	aarcange@redhat.com, mgorman@suse.de, tglx@linutronix.de,
	rientjes@google.com, linux-mm@kvack.org,
	linux-doc@vger.kernel.org, salyzyn@android.com, jeffv@google.com,
	nnk@google.com, catalin.marinas@arm.com, hpa@zytor.com,
	x86@kernel.org, hecmargi@upv.es, bp@suse.de, dcashman@google.com
Subject: Re: [PATCH v3 3/4] arm64: mm: support ARCH_MMAP_RND_BITS.
Date: Mon, 23 Nov 2015 15:04:59 +0000	[thread overview]
Message-ID: <20151123150459.GD4236@arm.com> (raw)
In-Reply-To: <1447888808-31571-4-git-send-email-dcashman@android.com>

On Wed, Nov 18, 2015 at 03:20:07PM -0800, Daniel Cashman wrote:
> From: dcashman <dcashman@google.com>
> 
> arm64: arch_mmap_rnd() uses STACK_RND_MASK to generate the
> random offset for the mmap base address.  This value represents a
> compromise between increased ASLR effectiveness and avoiding
> address-space fragmentation. Replace it with a Kconfig option, which
> is sensibly bounded, so that platform developers may choose where to
> place this compromise. Keep default values as new minimums.
> 
> Signed-off-by: Daniel Cashman <dcashman@google.com>
> ---
>  arch/arm64/Kconfig   | 23 +++++++++++++++++++++++
>  arch/arm64/mm/mmap.c |  6 ++++--
>  2 files changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 9ac16a4..be38e4c 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -51,6 +51,8 @@ config ARM64
>  	select HAVE_ARCH_JUMP_LABEL
>  	select HAVE_ARCH_KASAN if SPARSEMEM_VMEMMAP
>  	select HAVE_ARCH_KGDB
> +	select HAVE_ARCH_MMAP_RND_BITS
> +	select HAVE_ARCH_MMAP_RND_COMPAT_BITS if COMPAT
>  	select HAVE_ARCH_SECCOMP_FILTER
>  	select HAVE_ARCH_TRACEHOOK
>  	select HAVE_BPF_JIT
> @@ -104,6 +106,27 @@ config ARCH_PHYS_ADDR_T_64BIT
>  config MMU
>  	def_bool y
>  
> +config ARCH_MMAP_RND_BITS_MIN
> +       default 15 if ARM64_64K_PAGES
> +       default 19
> +
> +config ARCH_MMAP_RND_BITS_MAX
> +       default 20 if ARM64_64K_PAGES && ARCH_VA_BITS=39
> +       default 24 if ARCH_VA_BITS=39
> +       default 23 if ARM64_64K_PAGES && ARCH_VA_BITS=42
> +       default 27 if ARCH_VA_BITS=42
> +       default 29 if ARM64_64K_PAGES && ARCH_VA_BITS=48
> +       default 33 if ARCH_VA_BITS=48
> +       default 15 if ARM64_64K_PAGES
> +       default 19
> +
> +config ARCH_MMAP_RND_COMPAT_BITS_MIN
> +       default 7 if ARM64_64K_PAGES
> +       default 11

FYI: we now support 16k pages too, so this might need updating. It would
be much nicer if this was somehow computed rather than have the results
all open-coded like this.

Will

  parent reply	other threads:[~2015-11-23 15:04 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-18 23:20 [PATCH v3 0/4] Allow customizable random offset to mmap_base address Daniel Cashman
2015-11-18 23:20 ` Daniel Cashman
2015-11-18 23:20 ` Daniel Cashman
2015-11-18 23:20 ` [PATCH v3 1/4] mm: mmap: Add new /proc tunable for mmap_base ASLR Daniel Cashman
2015-11-18 23:20   ` Daniel Cashman
2015-11-18 23:20   ` Daniel Cashman
2015-11-18 23:20   ` [PATCH v3 2/4] arm: mm: support ARCH_MMAP_RND_BITS Daniel Cashman
2015-11-18 23:20     ` Daniel Cashman
2015-11-18 23:20     ` Daniel Cashman
2015-11-18 23:20     ` [PATCH v3 3/4] arm64: " Daniel Cashman
2015-11-18 23:20       ` Daniel Cashman
2015-11-18 23:20       ` Daniel Cashman
2015-11-18 23:20       ` [PATCH v3 4/4] x86: " Daniel Cashman
2015-11-18 23:20         ` Daniel Cashman
2015-11-18 23:20         ` Daniel Cashman
2015-11-19  0:16         ` Daniel Cashman
2015-11-19  0:16           ` Daniel Cashman
2015-11-19  0:16           ` Daniel Cashman
2015-11-23 15:04       ` Will Deacon [this message]
2015-11-23 15:04         ` [PATCH v3 3/4] arm64: " Will Deacon
2015-11-23 15:04         ` Will Deacon
2015-11-23 18:55         ` Daniel Cashman
2015-11-23 18:55           ` Daniel Cashman
2015-11-23 18:55           ` Daniel Cashman
2015-11-25  4:26           ` Michael Ellerman
2015-11-25  4:26             ` Michael Ellerman
2015-11-25  4:26             ` Michael Ellerman
2015-11-25 19:32             ` Daniel Cashman
2015-11-25 19:32               ` Daniel Cashman
2015-11-25 19:32               ` Daniel Cashman
2015-11-25 12:06           ` Catalin Marinas
2015-11-25 12:06             ` Catalin Marinas
2015-11-25 12:06             ` Catalin Marinas
2015-11-25 20:39             ` Daniel Cashman
2015-11-25 20:39               ` Daniel Cashman
2015-11-25 20:39               ` Daniel Cashman
2015-11-27  8:36               ` Andrey Ryabinin
2015-11-27  8:36                 ` Andrey Ryabinin
2015-11-27  8:36                 ` Andrey Ryabinin
2015-11-27  9:32                 ` Catalin Marinas
2015-11-27  9:32                   ` Catalin Marinas
2015-11-27  9:32                   ` Catalin Marinas
2015-11-19  0:14   ` [PATCH v3 1/4] mm: mmap: Add new /proc tunable for mmap_base ASLR Daniel Cashman
2015-11-19  0:14     ` Daniel Cashman
2015-11-19  0:14     ` Daniel Cashman
2015-11-25  0:40   ` Andrew Morton
2015-11-25  0:40     ` Andrew Morton
2015-11-25  0:40     ` Andrew Morton
2015-11-25  0:47     ` Kees Cook
2015-11-25  0:47       ` Kees Cook
2015-11-25  0:47       ` Kees Cook
2015-11-25 19:16       ` Daniel Cashman
2015-11-25 19:16         ` Daniel Cashman
2015-11-25 19:16         ` Daniel Cashman
2015-11-25  4:40   ` Michael Ellerman
2015-11-25  4:40     ` Michael Ellerman
2015-11-25  4:40     ` Michael Ellerman
2015-11-25 19:36     ` Daniel Cashman
2015-11-25 19:36       ` Daniel Cashman
2015-11-25 19:36       ` Daniel Cashman
2015-11-25  0:39 ` [PATCH v3 0/4] Allow customizable random offset to mmap_base address Andrew Morton
2015-11-25  0:39   ` Andrew Morton
2015-11-25  0:39   ` Andrew Morton
2015-11-25 19:07   ` Daniel Cashman
2015-11-25 19:07     ` Daniel Cashman
2015-11-25 19:07     ` Daniel Cashman
2015-11-26 15:11     ` Martin Schwidefsky
2015-11-26 15:11       ` Martin Schwidefsky
2015-11-26 15:11       ` Martin Schwidefsky
2015-11-26  7:07   ` Michael Ellerman
2015-11-26  7:07     ` Michael Ellerman
2015-11-26  7:07     ` Michael Ellerman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151123150459.GD4236@arm.com \
    --to=will.deacon@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.