From: Ingo Molnar <mingo@kernel.org>
To: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: akpm@linux-foundation.org, mingo@elte.hu, hpa@zytor.com,
tglx@linutronix.de, dave.hansen@intel.com, mingo@redhat.com,
n-horiguchi@ah.jp.nec.com, willy@linux.intel.com,
linux-kernel@vger.kernel.org
Subject: Re: [patch 3/3] x86, mm: get ASLR work for hugetlb mappings
Date: Tue, 19 Nov 2013 14:20:11 +0100 [thread overview]
Message-ID: <20131119132011.GD7263@gmail.com> (raw)
In-Reply-To: <20131119131750.EA45CE0090@blue.fi.intel.com>
* Kirill A. Shutemov <kirill.shutemov@linux.intel.com> wrote:
> Ingo Molnar wrote:
> >
> > * akpm@linux-foundation.org <akpm@linux-foundation.org> wrote:
> >
> > > From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
> > > Subject: x86, mm: get ASLR work for hugetlb mappings
> > >
> > > Matthew noticed that hugetlb doesn't participate in ASLR on x86-64. The
> > > reason is genereic hugetlb_get_unmapped_area() which is used on x86-64.
> > > It doesn't support randomization and use bottom-up unmapped area lookup,
> > > instead of usual top-down on x86-64.
> > >
> > > x86 has arch-specific hugetlb_get_unmapped_area(), but it's used only on
> > > x86-32.
> > >
> > > Let's use arch-specific hugetlb_get_unmapped_area() on x86-64 too. It
> > > fixes the issue and make hugetlb use top-down unmapped area lookup.
> >
> > So the title and the changelog has typos (I counted three), which
> > makes me wonder how well this was tested.
> >
> > To show/document the testing effort a before/after /proc/PID/maps
> > output showing hugetlb vma addresses would be nice, showing that ASLR
> > didn't work before and that it works adequately after the patch.
> >
> > A word about the range and granularity of randomization in the typical
> > case would be nice as well.
>
> What about this:
>
> From 440f2cd4a7e6918b9238680e4eacd75dc30291b6 Mon Sep 17 00:00:00 2001
> From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
> Date: Fri, 15 Nov 2013 14:14:05 -0800
> Subject: [PATCH] x86, mm: get ASLR works for hugetlb mappings
>
> Matthew noticed that hugetlb doesn't participate in ASLR on x86-64.
>
> % for i in `seq 3`; do
> > tools/testing/selftests/vm/map_hugetlb | grep address
> > done
> Returned address is 0x2aaaaac00000
> Returned address is 0x2aaaaac00000
> Returned address is 0x2aaaaac00000
>
> /proc/PID/maps entries for the mapping are always the same (except inode
> number):
>
> 2aaaaac00000-2aaabac00000 rw-p 00000000 00:0c 8200 /anon_hugepage (deleted)
> 2aaaaac00000-2aaabac00000 rw-p 00000000 00:0c 256 /anon_hugepage (deleted)
> 2aaaaac00000-2aaabac00000 rw-p 00000000 00:0c 7180 /anon_hugepage (deleted)
>
> The reason is generic hugetlb_get_unmapped_area() which is used on
> x86-64. It doesn't support randomization and use bottom-up unmapped
> area lookup, instead of usual top-down on x86-64.
>
> x86 has arch-specific hugetlb_get_unmapped_area(), but it's used only on
> x86-32.
>
> Let's use arch-specific hugetlb_get_unmapped_area() on x86-64 too.
> It fixes the issue and switch hugetlb to use top-down unmapped area
> lookup.
>
> % for i in `seq 3`; do
> > tools/testing/selftests/vm/map_hugetlb | grep address
> > done
> Returned address is 0x7f4f08a00000
> Returned address is 0x7fdda4200000
> Returned address is 0x7febe0000000
>
> /proc/PID/maps entries:
>
> 7f4f08a00000-7f4f18a00000 rw-p 00000000 00:0c 1168 /anon_hugepage (deleted)
> 7fdda4200000-7fddb4200000 rw-p 00000000 00:0c 7092 /anon_hugepage (deleted)
> 7febe0000000-7febf0000000 rw-p 00000000 00:0c 7183 /anon_hugepage (deleted)
>
> Unmapped area lookup policy for hugetlb mappings is consistent with
> normal mappings now -- the only difference is alignment requirements for
> huge pages.
>
> libhugetlbfs test-suite didn't detect any regressions with the patch
> applied (although it shows few failures on my machine regardless the
> patch).
Perfect!
(I'll apply this to tip:x86/mm unless someone objects.)
Thanks,
Ingo
next prev parent reply other threads:[~2013-11-19 13:20 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20131115221406.1692E1E418F@corp2gmr1-2.eem.corp.google.com>
2013-11-19 8:30 ` [patch 3/3] x86, mm: get ASLR work for hugetlb mappings Ingo Molnar
2013-11-19 13:17 ` Kirill A. Shutemov
2013-11-19 13:20 ` Ingo Molnar [this message]
2013-11-19 19:18 ` [tip:x86/mm] x86/mm: Implement ASLR " tip-bot for Kirill A. Shutemov
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=20131119132011.GD7263@gmail.com \
--to=mingo@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@intel.com \
--cc=hpa@zytor.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mingo@redhat.com \
--cc=n-horiguchi@ah.jp.nec.com \
--cc=tglx@linutronix.de \
--cc=willy@linux.intel.com \
/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.