diff options
| author | Linus Torvalds <[email protected]> | 2023-05-06 18:25:03 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2023-05-06 18:25:03 +0000 |
| commit | 706ce3caea1cc1dab8c7fd6e7d1389b46ad1570e (patch) | |
| tree | ba7d065f00d18c0f98c88d5d8aee2120b0020337 /mm/mmap.c | |
| parent | nfs: fix mis-merged __filemap_get_folio() error check (diff) | |
| parent | afs: fix the afs_dir_get_folio return value (diff) | |
| download | kernel-706ce3caea1cc1dab8c7fd6e7d1389b46ad1570e.tar.gz kernel-706ce3caea1cc1dab8c7fd6e7d1389b46ad1570e.zip | |
Merge tag 'mm-hotfixes-stable-2023-05-06-10-45' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Pull hotfixes from Andrew Morton:
"Five hotfixes.
Three are cc:stable, two pertain to merge window changes"
* tag 'mm-hotfixes-stable-2023-05-06-10-45' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm:
afs: fix the afs_dir_get_folio return value
nilfs2: do not write dirty data after degenerating to read-only
mm: do not reclaim private data from pinned page
nilfs2: fix infinite loop in nilfs_mdt_get_block()
mm/mmap/vma_merge: always check invariants
Diffstat (limited to 'mm/mmap.c')
| -rw-r--r-- | mm/mmap.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/mm/mmap.c b/mm/mmap.c index 5522130ae606..13678edaa22c 100644 --- a/mm/mmap.c +++ b/mm/mmap.c @@ -960,17 +960,17 @@ struct vm_area_struct *vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, merge_next = true; } + /* Verify some invariant that must be enforced by the caller. */ + VM_WARN_ON(prev && addr <= prev->vm_start); + VM_WARN_ON(curr && (addr != curr->vm_start || end > curr->vm_end)); + VM_WARN_ON(addr >= end); + if (!merge_prev && !merge_next) return NULL; /* Not mergeable. */ res = vma = prev; remove = remove2 = adjust = NULL; - /* Verify some invariant that must be enforced by the caller. */ - VM_WARN_ON(prev && addr <= prev->vm_start); - VM_WARN_ON(curr && (addr != curr->vm_start || end > curr->vm_end)); - VM_WARN_ON(addr >= end); - /* Can we merge both the predecessor and the successor? */ if (merge_prev && merge_next && is_mergeable_anon_vma(prev->anon_vma, next->anon_vma, NULL)) { |
