* Kirill A. Shutemov <kirill.shute...@linux.intel.com> wrote: > Ingo Molnar wrote: > > > > * a...@linux-foundation.org <a...@linux-foundation.org> wrote: > > > > > From: "Kirill A. Shutemov" <kirill.shute...@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.shute...@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 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/