mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
mm/mmap: remove __vma_adjust()
Inline the work of __vma_adjust() into vma_merge(). This reduces code size and has the added benefits of the comments for the cases being located with the code. Change the comments referencing vma_adjust() accordingly. [Liam.Howlett@oracle.com: fix vma_merge() offset when expanding the next vma] Link: https://lkml.kernel.org/r/20230130195713.2881766-1-Liam.Howlett@oracle.com Link: https://lkml.kernel.org/r/20230120162650.984577-49-Liam.Howlett@oracle.com Signed-off-by: Liam R. Howlett <Liam.Howlett@oracle.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
committed by
Andrew Morton
parent
287051b185
commit
0503ea8f5b
15
mm/rmap.c
15
mm/rmap.c
@@ -262,11 +262,12 @@ static inline void unlock_anon_vma_root(struct anon_vma *root)
|
||||
* Attach the anon_vmas from src to dst.
|
||||
* Returns 0 on success, -ENOMEM on failure.
|
||||
*
|
||||
* anon_vma_clone() is called by __vma_adjust(), __split_vma(), copy_vma() and
|
||||
* anon_vma_fork(). The first three want an exact copy of src, while the last
|
||||
* one, anon_vma_fork(), may try to reuse an existing anon_vma to prevent
|
||||
* endless growth of anon_vma. Since dst->anon_vma is set to NULL before call,
|
||||
* we can identify this case by checking (!dst->anon_vma && src->anon_vma).
|
||||
* anon_vma_clone() is called by vma_expand(), vma_merge(), __split_vma(),
|
||||
* copy_vma() and anon_vma_fork(). The first four want an exact copy of src,
|
||||
* while the last one, anon_vma_fork(), may try to reuse an existing anon_vma to
|
||||
* prevent endless growth of anon_vma. Since dst->anon_vma is set to NULL before
|
||||
* call, we can identify this case by checking (!dst->anon_vma &&
|
||||
* src->anon_vma).
|
||||
*
|
||||
* If (!dst->anon_vma && src->anon_vma) is true, this function tries to find
|
||||
* and reuse existing anon_vma which has no vmas and only one child anon_vma.
|
||||
@@ -1253,7 +1254,7 @@ void page_add_anon_rmap(struct page *page, struct vm_area_struct *vma,
|
||||
__lruvec_stat_mod_folio(folio, NR_ANON_MAPPED, nr);
|
||||
|
||||
if (likely(!folio_test_ksm(folio))) {
|
||||
/* address might be in next vma when migration races vma_adjust */
|
||||
/* address might be in next vma when migration races vma_merge */
|
||||
if (first)
|
||||
__page_set_anon_rmap(folio, page, vma, address,
|
||||
!!(flags & RMAP_EXCLUSIVE));
|
||||
@@ -2524,7 +2525,7 @@ void hugepage_add_anon_rmap(struct page *page, struct vm_area_struct *vma,
|
||||
|
||||
BUG_ON(!folio_test_locked(folio));
|
||||
BUG_ON(!anon_vma);
|
||||
/* address might be in next vma when migration races vma_adjust */
|
||||
/* address might be in next vma when migration races vma_merge */
|
||||
first = atomic_inc_and_test(&folio->_entire_mapcount);
|
||||
VM_BUG_ON_PAGE(!first && (flags & RMAP_EXCLUSIVE), page);
|
||||
VM_BUG_ON_PAGE(!first && PageAnonExclusive(page), page);
|
||||
|
Reference in New Issue
Block a user