From 95fbad23794ecd847977b2a9ccbf2f73fd732ced Mon Sep 17 00:00:00 2001 From: Michel Lespinasse Date: Thu, 13 Jan 2011 15:46:12 -0800 Subject: [PATCH] --- yaml --- r: 230727 b: refs/heads/master c: 5fdb2002131cd4e210b9638a4fc932ec7be491d1 h: refs/heads/master i: 230725: 115c6fdbc9184cbf5e7fe6cb67b00ec7ab133ac1 230723: a7d9ec70ae39edb3a4e02f6f46ddd619d953e183 230719: fdd8e459da20d4511925317e086a53e4e5537ab8 v: v3 --- [refs] | 2 +- trunk/mm/mlock.c | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/[refs] b/[refs] index 08cdbf8da24b..a82f72dc86f7 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 110d74a921f4d272b47ef6104fcf937df808f4c8 +refs/heads/master: 5fdb2002131cd4e210b9638a4fc932ec7be491d1 diff --git a/trunk/mm/mlock.c b/trunk/mm/mlock.c index 25cc9e88c540..84da66b7bbf0 100644 --- a/trunk/mm/mlock.c +++ b/trunk/mm/mlock.c @@ -169,7 +169,7 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma, VM_BUG_ON(end > vma->vm_end); VM_BUG_ON(!rwsem_is_locked(&mm->mmap_sem)); - gup_flags = FOLL_TOUCH | FOLL_MLOCK; + gup_flags = FOLL_TOUCH; /* * We want to touch writable mappings with a write fault in order * to break COW, except for shared mappings because these don't COW @@ -178,6 +178,9 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma, if ((vma->vm_flags & (VM_WRITE | VM_SHARED)) == VM_WRITE) gup_flags |= FOLL_WRITE; + if (vma->vm_flags & VM_LOCKED) + gup_flags |= FOLL_MLOCK; + /* We don't try to access the guard page of a stack vma */ if (stack_guard_page(vma, start)) { addr += PAGE_SIZE; @@ -456,18 +459,15 @@ static int do_mlock_pages(unsigned long start, size_t len, int ignore_errors) /* * Now fault in a range of pages within the first VMA. */ - if (vma->vm_flags & VM_LOCKED) { - ret = __mlock_vma_pages_range(vma, nstart, nend); - if (ret < 0 && ignore_errors) { - ret = 0; - continue; /* continue at next VMA */ - } - if (ret) { - ret = __mlock_posix_error_return(ret); - break; - } - } else - make_pages_present(nstart, nend); + ret = __mlock_vma_pages_range(vma, nstart, nend); + if (ret < 0 && ignore_errors) { + ret = 0; + continue; /* continue at next VMA */ + } + if (ret) { + ret = __mlock_posix_error_return(ret); + break; + } } up_read(&mm->mmap_sem); return ret; /* 0 or negative error code */