From e1640b8c07f4b5b6125fb06fab240e2c125b0c0b Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sun, 15 Aug 2010 11:35:52 -0700 Subject: [PATCH] --- yaml --- r: 209468 b: refs/heads/master c: d7824370e26325c881b665350ce64fb0a4fde24a h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/fs/proc/task_mmu.c | 8 +++++++- trunk/mm/mlock.c | 8 ++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 46737a9fbe7e..6fb723ce15ac 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1b68c9596ce17a1e06918ed65fc3d19b92b04aab +refs/heads/master: d7824370e26325c881b665350ce64fb0a4fde24a diff --git a/trunk/fs/proc/task_mmu.c b/trunk/fs/proc/task_mmu.c index aea1d3f1ffb5..439fc1f1c1c4 100644 --- a/trunk/fs/proc/task_mmu.c +++ b/trunk/fs/proc/task_mmu.c @@ -210,6 +210,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) int flags = vma->vm_flags; unsigned long ino = 0; unsigned long long pgoff = 0; + unsigned long start; dev_t dev = 0; int len; @@ -220,8 +221,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; } + /* We don't show the stack guard page in /proc/maps */ + start = vma->vm_start; + if (vma->vm_flags & VM_GROWSDOWN) + start += PAGE_SIZE; + seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", - vma->vm_start, + start, vma->vm_end, flags & VM_READ ? 'r' : '-', flags & VM_WRITE ? 'w' : '-', diff --git a/trunk/mm/mlock.c b/trunk/mm/mlock.c index 3f82720e0515..49e5e4cb8232 100644 --- a/trunk/mm/mlock.c +++ b/trunk/mm/mlock.c @@ -167,6 +167,14 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma, if (vma->vm_flags & VM_WRITE) gup_flags |= FOLL_WRITE; + /* We don't try to access the guard page of a stack vma */ + if (vma->vm_flags & VM_GROWSDOWN) { + if (start == vma->vm_start) { + start += PAGE_SIZE; + nr_pages--; + } + } + while (nr_pages > 0) { int i;