mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
mm: protect VMA modifications using VMA sequence count
The VMA sequence count has been introduced to allow fast detection of VMA modification when running a page fault handler without holding the mmap_sem. This patch provides protection against the VMA modification done in : - madvise() - mpol_rebind_policy() - vma_replace_policy() - change_prot_numa() - mlock(), munlock() - mprotect() - mmap_region() - collapse_huge_page() - userfaultd registering services In addition, VMA fields which will be read during the speculative fault path needs to be written using WRITE_ONCE to prevent write to be split and intermediate values to be pushed to other CPUs. Change-Id: Ic36046b7254e538b6baf7144c50ae577ee7f2074 Signed-off-by: Laurent Dufour <[email protected]> Patch-mainline: linux-mm @ Tue, 17 Apr 2018 16:33:15 [[email protected]: trivial merge conflict fixes] Signed-off-by: Vinayak Menon <[email protected]> [[email protected]: trivial merge conflict fixes] Signed-off-by: Charan Teja Reddy <[email protected]>
This commit is contained in:
parent
662540931e
commit
06219e6c87
9 changed files with 94 additions and 41 deletions
|
|
@ -1277,8 +1277,11 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
|
|||
goto out_mm;
|
||||
}
|
||||
for (vma = mm->mmap; vma; vma = vma->vm_next) {
|
||||
vma->vm_flags &= ~VM_SOFTDIRTY;
|
||||
vm_write_begin(vma);
|
||||
WRITE_ONCE(vma->vm_flags,
|
||||
vma->vm_flags & ~VM_SOFTDIRTY);
|
||||
vma_set_page_prot(vma);
|
||||
vm_write_end(vma);
|
||||
}
|
||||
downgrade_write(&mm->mmap_sem);
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in a new issue