Re: [PATCH] Don't allow the stack to grow into hugetlb reserved regions

From: Ken Chen
Date: Sun Jan 28 2007 - 15:28:26 EST


On 1/27/07, Hugh Dickins <hugh@xxxxxxxxxxx> wrote:
Thanks, that's reassuring for the hugetlb case, and therefore Adam's
patch should not be delayed. But it does leave open the question I
was raising in the text you've snipped: if ia64 needs those stringent
REGION checks in its ia64_do_page_fault path, don't we need to add
them some(messy)how in the get_user_pages find_extend_vma path?

I left it out because I need more time to digest what you said. After
looked through ia64's page fault and get_user_pages, I've concluded
that the bug scenario Adam described is impossible to trigger on ia64
due to various constrains and how the virtual address is laid out.

For ia64, the hugetlb address region is reserved at the top of user
space address. Stacks are below that region. Throw in the mix, we
have two stacks, one memory stack that grows down and one register
stack backing store that grows up. These two stacks are always in
pair and grow towards each other. And lastly, we have virtual address
holes in between regions. It's just impossible to grow any of these
two stacks into hugetlb region no matter how I played it.

So, AFAICS this bug doesn't apply to ia64 (and certainly not x86). The
new check of is_hugepage_only_range() is really a noop for both arches.

- Ken
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/