mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-07 12:25:00 -04:00
Merge "BACKPORT: FROMLIST: mm: protect free_pgtables with mmap_lock write lock in exit_mmap"
This commit is contained in:
commit
d7bb68d35f
1 changed files with 7 additions and 7 deletions
14
mm/mmap.c
14
mm/mmap.c
|
|
@ -3254,10 +3254,9 @@ void exit_mmap(struct mm_struct *mm)
|
|||
(void)__oom_reap_task_mm(mm);
|
||||
|
||||
set_bit(MMF_OOM_SKIP, &mm->flags);
|
||||
down_write(&mm->mmap_sem);
|
||||
up_write(&mm->mmap_sem);
|
||||
}
|
||||
|
||||
down_write(&mm->mmap_sem);
|
||||
if (mm->locked_vm) {
|
||||
vma = mm->mmap;
|
||||
while (vma) {
|
||||
|
|
@ -3270,8 +3269,11 @@ void exit_mmap(struct mm_struct *mm)
|
|||
arch_exit_mmap(mm);
|
||||
|
||||
vma = mm->mmap;
|
||||
if (!vma) /* Can happen if dup_mmap() received an OOM */
|
||||
if (!vma) {
|
||||
/* Can happen if dup_mmap() received an OOM */
|
||||
up_write(&mm->mmap_sem);;
|
||||
return;
|
||||
}
|
||||
|
||||
lru_add_drain();
|
||||
flush_cache_mm(mm);
|
||||
|
|
@ -3282,16 +3284,14 @@ void exit_mmap(struct mm_struct *mm)
|
|||
free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, USER_PGTABLES_CEILING);
|
||||
tlb_finish_mmu(&tlb, 0, -1);
|
||||
|
||||
/*
|
||||
* Walk the list again, actually closing and freeing it,
|
||||
* with preemption enabled, without holding any MM locks.
|
||||
*/
|
||||
/* Walk the list again, actually closing and freeing it. */
|
||||
while (vma) {
|
||||
if (vma->vm_flags & VM_ACCOUNT)
|
||||
nr_accounted += vma_pages(vma);
|
||||
vma = remove_vma(vma);
|
||||
cond_resched();
|
||||
}
|
||||
up_write(&mm->mmap_sem);
|
||||
vm_unacct_memory(nr_accounted);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue