aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched
diff options
context:
space:
mode:
authorNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>2015-04-07 17:26:47 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2015-04-07 19:45:33 -0400
commit6b79c57b92cdd90853002980609af516d14c4f9c (patch)
tree2b209795920c9311d8638b6f442224e0aa7995a0 /kernel/sched
parentce66b032ad7b838bf376e3b1bb4d8bce1a69ee5c (diff)
mm: numa: disable change protection for vma(VM_HUGETLB)
Currently when a process accesses a hugetlb range protected with PROTNONE, unexpected COWs are triggered, which finally puts the hugetlb subsystem into a broken/uncontrollable state, where for example h->resv_huge_pages is subtracted too much and wraps around to a very large number, and the free hugepage pool is no longer maintainable. This patch simply stops changing protection for vma(VM_HUGETLB) to fix the problem. And this also allows us to avoid useless overhead of minor faults. Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Suggested-by: Mel Gorman <mgorman@suse.de> Cc: Hugh Dickins <hughd@google.com> Cc: "Kirill A. Shutemov" <kirill@shutemov.name> Cc: David Rientjes <rientjes@google.com> Cc: Rik van Riel <riel@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/fair.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index bcfe32088b37..241213be507c 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -2165,8 +2165,10 @@ void task_numa_work(struct callback_head *work)
2165 vma = mm->mmap; 2165 vma = mm->mmap;
2166 } 2166 }
2167 for (; vma; vma = vma->vm_next) { 2167 for (; vma; vma = vma->vm_next) {
2168 if (!vma_migratable(vma) || !vma_policy_mof(vma)) 2168 if (!vma_migratable(vma) || !vma_policy_mof(vma) ||
2169 is_vm_hugetlb_page(vma)) {
2169 continue; 2170 continue;
2171 }
2170 2172
2171 /* 2173 /*
2172 * Shared library pages mapped by multiple processes are not 2174 * Shared library pages mapped by multiple processes are not