mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull core fixes from Ingo Molnar: "This fixes a particularly thorny munmap() bug with MPX, plus fixes a host build environment assumption in objtool" * 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: objtool: Allow AR to be overridden with HOSTAR x86/mpx, mm/core: Fix recursive munmap() corruption
This commit is contained in:
commit
1335d9a1fb
9 changed files with 27 additions and 26 deletions
15
mm/mmap.c
15
mm/mmap.c
|
|
@ -2735,9 +2735,17 @@ int __do_munmap(struct mm_struct *mm, unsigned long start, size_t len,
|
|||
return -EINVAL;
|
||||
|
||||
len = PAGE_ALIGN(len);
|
||||
end = start + len;
|
||||
if (len == 0)
|
||||
return -EINVAL;
|
||||
|
||||
/*
|
||||
* arch_unmap() might do unmaps itself. It must be called
|
||||
* and finish any rbtree manipulation before this code
|
||||
* runs and also starts to manipulate the rbtree.
|
||||
*/
|
||||
arch_unmap(mm, start, end);
|
||||
|
||||
/* Find the first overlapping VMA */
|
||||
vma = find_vma(mm, start);
|
||||
if (!vma)
|
||||
|
|
@ -2746,7 +2754,6 @@ int __do_munmap(struct mm_struct *mm, unsigned long start, size_t len,
|
|||
/* we have start < vma->vm_end */
|
||||
|
||||
/* if it doesn't overlap, we have nothing.. */
|
||||
end = start + len;
|
||||
if (vma->vm_start >= end)
|
||||
return 0;
|
||||
|
||||
|
|
@ -2816,12 +2823,6 @@ int __do_munmap(struct mm_struct *mm, unsigned long start, size_t len,
|
|||
/* Detach vmas from rbtree */
|
||||
detach_vmas_to_be_unmapped(mm, vma, prev, end);
|
||||
|
||||
/*
|
||||
* mpx unmap needs to be called with mmap_sem held for write.
|
||||
* It is safe to call it before unmap_region().
|
||||
*/
|
||||
arch_unmap(mm, vma, start, end);
|
||||
|
||||
if (downgrade)
|
||||
downgrade_write(&mm->mmap_sem);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue