Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 209696
b: refs/heads/master
c: 7798330
h: refs/heads/master
v: v3
  • Loading branch information
Linus Torvalds committed Aug 21, 2010
1 parent fdba08e commit f566f06
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 297c5eee372478fc32fec5fe8eed711eedb13f3d
refs/heads/master: 7798330ac8114c731cfab83e634c6ecedaa233d7
21 changes: 16 additions & 5 deletions trunk/mm/mlock.c
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,19 @@ void munlock_vma_page(struct page *page)
}
}

/* Is the vma a continuation of the stack vma above it? */
static inline int vma_stack_continue(struct vm_area_struct *vma, unsigned long addr)
{
return vma && (vma->vm_end == addr) && (vma->vm_flags & VM_GROWSDOWN);
}

static inline int stack_guard_page(struct vm_area_struct *vma, unsigned long addr)
{
return (vma->vm_flags & VM_GROWSDOWN) &&
(vma->vm_start == addr) &&
!vma_stack_continue(vma->vm_prev, addr);
}

/**
* __mlock_vma_pages_range() - mlock a range of pages in the vma.
* @vma: target vma
Expand Down Expand Up @@ -168,11 +181,9 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma,
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--;
}
if (stack_guard_page(vma, start)) {
addr += PAGE_SIZE;
nr_pages--;
}

while (nr_pages > 0) {
Expand Down

0 comments on commit f566f06

Please sign in to comment.