mlock: do not munlock pages in __do_fault()
If the page is going to be written to, __do_page needs to break COW. However, the old page (before breaking COW) was never mapped mapped into the current pte (__do_fault is only called when the pte is not present), so vmscan can't have marked the old page as PageMlocked due to being mapped in __do_fault's VMA. Therefore, __do_fault() does not need to worry about clearing PageMlocked() on the old page. Signed-off-by: Michel Lespinasse <walken@google.com> Reviewed-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: Hugh Dickins <hughd@google.com> Cc: Rik van Riel <riel@redhat.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
e15f8c01af
commit
419d8c96db
1 changed files with 0 additions and 6 deletions
|
@ -3051,12 +3051,6 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
|
|||
goto out;
|
||||
}
|
||||
charged = 1;
|
||||
/*
|
||||
* Don't let another task, with possibly unlocked vma,
|
||||
* keep the mlocked page.
|
||||
*/
|
||||
if (vma->vm_flags & VM_LOCKED)
|
||||
clear_page_mlock(vmf.page);
|
||||
copy_user_highpage(page, vmf.page, address, vma);
|
||||
__SetPageUptodate(page);
|
||||
} else {
|
||||
|
|
Loading…
Reference in a new issue