diff options
| -rw-r--r-- | fs/proc/task_mmu.c | 8 | ||||
| -rw-r--r-- | mm/mlock.c | 8 |
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 | ||
