diff options
author | Andrea Arcangeli <aarcange@redhat.com> | 2011-02-15 19:02:45 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-02-15 15:21:11 -0800 |
commit | a7d6e4ecdb7648478ddec76d30d87d03d6e22b31 (patch) | |
tree | 1e0110780ac0a8eeef2629e1d5880602bd6003c0 /include/linux | |
parent | 09f586b35d8503b57de1e0e9b19bc6b38e0d7319 (diff) | |
download | linux-a7d6e4ecdb7648478ddec76d30d87d03d6e22b31.tar.gz linux-a7d6e4ecdb7648478ddec76d30d87d03d6e22b31.tar.bz2 linux-a7d6e4ecdb7648478ddec76d30d87d03d6e22b31.zip |
thp: prevent hugepages during args/env copying into the user stack
Transparent hugepages can only be created if rmap is fully
functional. So we must prevent hugepages to be created while
is_vma_temporary_stack() is true.
This also optmizes away some harmless but unnecessary setting of
khugepaged_scan.address and it switches some BUG_ON to VM_BUG_ON.
Signed-off-by: Andrea Arcangeli <aarcange@redhat.com>
Acked-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'include/linux')
-rw-r--r-- | include/linux/huge_mm.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/huge_mm.h b/include/linux/huge_mm.h index 8e6c8c42bc3c..df29c8fde36b 100644 --- a/include/linux/huge_mm.h +++ b/include/linux/huge_mm.h @@ -57,7 +57,8 @@ extern pmd_t *page_check_address_pmd(struct page *page, (transparent_hugepage_flags & \ (1<<TRANSPARENT_HUGEPAGE_REQ_MADV_FLAG) && \ ((__vma)->vm_flags & VM_HUGEPAGE))) && \ - !((__vma)->vm_flags & VM_NOHUGEPAGE)) + !((__vma)->vm_flags & VM_NOHUGEPAGE) && \ + !is_vma_temporary_stack(__vma)) #define transparent_hugepage_defrag(__vma) \ ((transparent_hugepage_flags & \ (1<<TRANSPARENT_HUGEPAGE_DEFRAG_FLAG)) || \ |