[PATCH v3 0/4] Allow customizable random offset to mmap_base address.

Martin Schwidefsky schwidefsky at de.ibm.com
Thu Nov 26 07:11:29 PST 2015

On Wed, 25 Nov 2015 11:07:09 -0800
Daniel Cashman <dcashman at android.com> wrote:

> On 11/24/2015 04:39 PM, Andrew Morton wrote:
> > mips, powerpc and s390 also implement arch_mmap_rnd().  Are there any
> > special considerations here, or it just a matter of maintainers wiring
> > it up and testing it?
> I had not yet looked at those at all, as I had no way to do even a
> rudimentary "does it boot" test and opted to post v3 first.  Upon first
> glance, it should just be a matter of wiring it up:
> Mips is divided into 12/16 bits for 32/64 bit (assume baseline 4k page)
> w/COMPAT kconfig,  powerpc is 11/18 w/COMPAT, s390 is 11/11 w/COMPAT.
> s390 is a bit strange as COMPAT is for a 31-bit address space, although
> is_32bit_task() is used to determine which mask to use, and the mask
> itself for 64-bit only introduces 11 bits of entropy, but while still
> affecting larger chunks of the address space (mask is 0x3ff80, resulting
> in an effective 0x7ff shift of PAGE_SIZE + 7 bits).

s390 uses a mmap randomization of 11 bits but applies it to different
bits dependent if the task is a compat task or not. From the machine
perspective we would like to always use the randomization bits for
normal, non-compat tasks. But as the 2GB address space for compat tasks
is really limited the randomization is applied in bits 2^12..2^22 for
compat tasks vs 2^19..2^29 for normal tasks at the cost of performance.
This has to do with the cache aliasing on z13.

By the way we will replace is_32bit_task with() is_compat_task(), I have
a patch from Heiko pending for that.

blue skies,

"Reality continues to ruin my life." - Calvin.

More information about the linux-arm-kernel mailing list