Merge ad57a1022f
("Merge tag 'exfat-for-5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/linkinjeon/exfat") into android-mainline
Steps on the way to 5.8-rc1. Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I4bc42f572167ea2f815688b4d1eb6124b6d260d4
This commit is contained in:
22
mm/mlock.c
22
mm/mlock.c
@@ -49,7 +49,7 @@ EXPORT_SYMBOL(can_do_mlock);
|
||||
* When lazy mlocking via vmscan, it is important to ensure that the
|
||||
* vma's VM_LOCKED status is not concurrently being modified, otherwise we
|
||||
* may have mlocked a page that is being munlocked. So lazy mlock must take
|
||||
* the mmap_sem for read, and verify that the vma really is locked
|
||||
* the mmap_lock for read, and verify that the vma really is locked
|
||||
* (see mm/rmap.c).
|
||||
*/
|
||||
|
||||
@@ -381,7 +381,7 @@ static unsigned long __munlock_pagevec_fill(struct pagevec *pvec,
|
||||
/*
|
||||
* Initialize pte walk starting at the already pinned page where we
|
||||
* are sure that there is a pte, as it was pinned under the same
|
||||
* mmap_sem write op.
|
||||
* mmap_lock write op.
|
||||
*/
|
||||
pte = get_locked_pte(vma->vm_mm, start, &ptl);
|
||||
/* Make sure we do not cross the page table boundary */
|
||||
@@ -565,7 +565,7 @@ success:
|
||||
mm->locked_vm += nr_pages;
|
||||
|
||||
/*
|
||||
* vm_flags is protected by the mmap_sem held in write mode.
|
||||
* vm_flags is protected by the mmap_lock held in write mode.
|
||||
* It's okay if try_to_unmap_one unmaps a page just after we
|
||||
* set VM_LOCKED, populate_vma_page_range will bring it back.
|
||||
*/
|
||||
@@ -686,7 +686,7 @@ static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t fla
|
||||
lock_limit >>= PAGE_SHIFT;
|
||||
locked = len >> PAGE_SHIFT;
|
||||
|
||||
if (down_write_killable(¤t->mm->mmap_sem))
|
||||
if (mmap_write_lock_killable(current->mm))
|
||||
return -EINTR;
|
||||
|
||||
locked += current->mm->locked_vm;
|
||||
@@ -705,7 +705,7 @@ static __must_check int do_mlock(unsigned long start, size_t len, vm_flags_t fla
|
||||
if ((locked <= lock_limit) || capable(CAP_IPC_LOCK))
|
||||
error = apply_vma_lock_flags(start, len, flags);
|
||||
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
@@ -742,10 +742,10 @@ SYSCALL_DEFINE2(munlock, unsigned long, start, size_t, len)
|
||||
len = PAGE_ALIGN(len + (offset_in_page(start)));
|
||||
start &= PAGE_MASK;
|
||||
|
||||
if (down_write_killable(¤t->mm->mmap_sem))
|
||||
if (mmap_write_lock_killable(current->mm))
|
||||
return -EINTR;
|
||||
ret = apply_vma_lock_flags(start, len, 0);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -811,14 +811,14 @@ SYSCALL_DEFINE1(mlockall, int, flags)
|
||||
lock_limit = rlimit(RLIMIT_MEMLOCK);
|
||||
lock_limit >>= PAGE_SHIFT;
|
||||
|
||||
if (down_write_killable(¤t->mm->mmap_sem))
|
||||
if (mmap_write_lock_killable(current->mm))
|
||||
return -EINTR;
|
||||
|
||||
ret = -ENOMEM;
|
||||
if (!(flags & MCL_CURRENT) || (current->mm->total_vm <= lock_limit) ||
|
||||
capable(CAP_IPC_LOCK))
|
||||
ret = apply_mlockall_flags(flags);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
if (!ret && (flags & MCL_CURRENT))
|
||||
mm_populate(0, TASK_SIZE);
|
||||
|
||||
@@ -829,10 +829,10 @@ SYSCALL_DEFINE0(munlockall)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (down_write_killable(¤t->mm->mmap_sem))
|
||||
if (mmap_write_lock_killable(current->mm))
|
||||
return -EINTR;
|
||||
ret = apply_mlockall_flags(0);
|
||||
up_write(¤t->mm->mmap_sem);
|
||||
mmap_write_unlock(current->mm);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user