aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fs/proc/task_mmu.c8
-rw-r--r--mm/mlock.c8
2 files changed, 15 insertions, 1 deletions
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index aea1d3f1ffb5..439fc1f1c1c4 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -210,6 +210,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
210 int flags = vma->vm_flags; 210 int flags = vma->vm_flags;
211 unsigned long ino = 0; 211 unsigned long ino = 0;
212 unsigned long long pgoff = 0; 212 unsigned long long pgoff = 0;
213 unsigned long start;
213 dev_t dev = 0; 214 dev_t dev = 0;
214 int len; 215 int len;
215 216
@@ -220,8 +221,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
220 pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; 221 pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
221 } 222 }
222 223
224 /* We don't show the stack guard page in /proc/maps */
225 start = vma->vm_start;
226 if (vma->vm_flags & VM_GROWSDOWN)
227 start += PAGE_SIZE;
228
223 seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", 229 seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n",
224 vma->vm_start, 230 start,
225 vma->vm_end, 231 vma->vm_end,
226 flags & VM_READ ? 'r' : '-', 232 flags & VM_READ ? 'r' : '-',
227 flags & VM_WRITE ? 'w' : '-', 233 flags & VM_WRITE ? 'w' : '-',
diff --git a/mm/mlock.c b/mm/mlock.c
index 3f82720e0515..49e5e4cb8232 100644
--- a/mm/mlock.c
+++ b/mm/mlock.c
@@ -167,6 +167,14 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma,
167 if (vma->vm_flags & VM_WRITE) 167 if (vma->vm_flags & VM_WRITE)
168 gup_flags |= FOLL_WRITE; 168 gup_flags |= FOLL_WRITE;
169 169
170 /* We don't try to access the guard page of a stack vma */
171 if (vma->vm_flags & VM_GROWSDOWN) {
172 if (start == vma->vm_start) {
173 start += PAGE_SIZE;
174 nr_pages--;
175 }
176 }
177
170 while (nr_pages > 0) { 178 while (nr_pages > 0) {
171 int i; 179 int i;
172 180