Home
last modified time | relevance | path

Searched refs:anon_vma (Results 1 - 25 of 47) sorted by relevance

12

/kernel/linux/linux-5.10/mm/
H A Drmap.c29 * anon_vma->rwsem
44 * anon_vma->rwsem,mapping->i_mutex (memory_failure, collect_procs_anon)
86 static inline struct anon_vma *anon_vma_alloc(void) in anon_vma_alloc()
88 struct anon_vma *anon_vma; in anon_vma_alloc() local
90 anon_vma = kmem_cache_alloc(anon_vma_cachep, GFP_KERNEL); in anon_vma_alloc()
91 if (anon_vma) { in anon_vma_alloc()
92 atomic_set(&anon_vma->refcount, 1); in anon_vma_alloc()
93 anon_vma->num_children = 0; in anon_vma_alloc()
94 anon_vma in anon_vma_alloc()
106 anon_vma_free(struct anon_vma *anon_vma) anon_vma_free() argument
146 anon_vma_chain_link(struct vm_area_struct *vma, struct anon_vma_chain *avc, struct anon_vma *anon_vma) anon_vma_chain_link() argument
187 struct anon_vma *anon_vma, *allocated; __anon_vma_prepare() local
240 lock_anon_vma_root(struct anon_vma *root, struct anon_vma *anon_vma) lock_anon_vma_root() argument
282 struct anon_vma *anon_vma; anon_vma_clone() local
333 struct anon_vma *anon_vma; anon_vma_fork() local
402 struct anon_vma *anon_vma = avc->anon_vma; unlink_anon_vmas() local
436 struct anon_vma *anon_vma = avc->anon_vma; unlink_anon_vmas() local
449 struct anon_vma *anon_vma = data; anon_vma_ctor() local
491 struct anon_vma *anon_vma = NULL; page_get_anon_vma() local
534 struct anon_vma *anon_vma = NULL; page_lock_anon_vma_read() local
594 page_unlock_anon_vma_read(struct anon_vma *anon_vma) page_unlock_anon_vma_read() argument
1029 struct anon_vma *anon_vma = vma->anon_vma; page_move_anon_rmap() local
1055 struct anon_vma *anon_vma = vma->anon_vma; __page_set_anon_rmap() local
1850 __put_anon_vma(struct anon_vma *anon_vma) __put_anon_vma() argument
1862 struct anon_vma *anon_vma; rmap_walk_anon_lock() local
1898 struct anon_vma *anon_vma; rmap_walk_anon() local
2021 struct anon_vma *anon_vma = vma->anon_vma; hugepage_add_anon_rmap() local
[all...]
H A Dmmap.c405 struct anon_vma *anon_vma = vma->anon_vma; in validate_mm() local
408 if (anon_vma) { in validate_mm()
409 anon_vma_lock_read(anon_vma); in validate_mm()
412 anon_vma_unlock_read(anon_vma); in validate_mm()
503 * vma has some anon_vma assigned, and is already inserted on that
504 * anon_vma's interval trees.
507 * vma must be removed from the anon_vma's interval trees using
514 * the root anon_vma'
754 struct anon_vma *anon_vma = NULL; __vma_adjust() local
1088 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) can_vma_merge_before() argument
1110 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) can_vma_merge_after() argument
1169 vma_merge(struct mm_struct *mm, struct vm_area_struct *prev, unsigned long addr, unsigned long end, unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, pgoff_t pgoff, struct mempolicy *policy, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) vma_merge() argument
1307 struct anon_vma *anon_vma = READ_ONCE(old->anon_vma); reusable_anon_vma() local
1325 struct anon_vma *anon_vma = NULL; find_mergeable_anon_vma() local
3611 vm_lock_anon_vma(struct mm_struct *mm, struct anon_vma *anon_vma) vm_lock_anon_vma() argument
3729 vm_unlock_anon_vma(struct anon_vma *anon_vma) vm_unlock_anon_vma() argument
[all...]
H A Dksm.c187 * @anon_vma: pointer to anon_vma for this mm,address, when in stable tree
199 struct anon_vma *anon_vma; /* when stable */ member
530 if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in find_mergeable_vma()
543 * to undo, we also need to drop a reference to the anon_vma. in break_cow()
545 put_anon_vma(rmap_item->anon_vma); in break_cow()
647 put_anon_vma(rmap_item->anon_vma); in remove_node_from_stable_tree()
797 put_anon_vma(rmap_item->anon_vma); in remove_rmap_item_from_tree()
986 if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in unmerge_and_remove_all_rmap_items()
2577 struct anon_vma *anon_vma = page_anon_vma(page); ksm_might_need_to_copy() local
2628 struct anon_vma *anon_vma = rmap_item->anon_vma; rmap_walk_ksm() local
[all...]
H A Dhuge_memory.c1278 VM_BUG_ON_VMA(!vma->anon_vma, vma); in do_huge_pmd_wp_page()
1414 struct anon_vma *anon_vma = NULL; in do_huge_pmd_numa_page() local
1479 * Page is misplaced. Page lock serialises migrations. Acquire anon_vma in do_huge_pmd_numa_page()
1484 anon_vma = page_lock_anon_vma_read(page); in do_huge_pmd_numa_page()
1496 if (unlikely(!anon_vma)) { in do_huge_pmd_numa_page()
1557 if (anon_vma) in do_huge_pmd_numa_page()
1558 page_unlock_anon_vma_read(anon_vma); in do_huge_pmd_numa_page()
2572 * anon_vma of the transparent hugepage can become the vma->anon_vma
2654 struct anon_vma *anon_vma = NULL; split_huge_page_to_list() local
[all...]
H A Dmigrate.c1043 struct anon_vma *anon_vma = NULL; in __unmap_and_move() local
1091 * we cannot notice that anon_vma is freed while we migrates a page. in __unmap_and_move()
1092 * This get_anon_vma() delays freeing anon_vma pointer until the end in __unmap_and_move()
1098 * getting a hold on an anon_vma from outside one of its mms. in __unmap_and_move()
1099 * But if we cannot get anon_vma, then we won't need it anyway, in __unmap_and_move()
1104 anon_vma = page_get_anon_vma(page); in __unmap_and_move()
1142 VM_BUG_ON_PAGE(PageAnon(page) && !PageKsm(page) && !anon_vma, in __unmap_and_move()
1158 /* Drop an anon_vma reference if we took one */ in __unmap_and_move()
1159 if (anon_vma) in __unmap_and_move()
1300 struct anon_vma *anon_vma = NULL; unmap_and_move_huge_page() local
[all...]
H A Dmremap.c88 if (vma->anon_vma) in take_rmap_locks()
89 anon_vma_lock_write(vma->anon_vma); in take_rmap_locks()
94 if (vma->anon_vma) in drop_rmap_locks()
95 anon_vma_unlock_write(vma->anon_vma); in drop_rmap_locks()
127 * When need_rmap_locks is true, we take the i_mmap_rwsem and anon_vma in move_ptes()
H A Dkhugepaged.c466 if (!vma->anon_vma || vma->vm_ops) in hugepage_vma_check()
992 if (!vma->anon_vma || vma->vm_ops) in hugepage_vma_revalidate()
1130 * handled by the anon_vma lock + PG_lock. in collapse_huge_page()
1140 anon_vma_lock_write(vma->anon_vma); in collapse_huge_page()
1179 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page()
1185 * All pages are isolated and locked so anon_vma rmap in collapse_huge_page()
1188 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page()
1538 if (vma->anon_vma) in collapse_pte_mapped_thp()
1539 anon_vma_lock_write(vma->anon_vma); in collapse_pte_mapped_thp()
1550 if (vma->anon_vma) in collapse_pte_mapped_thp()
[all...]
H A Ddebug.c207 "prot %lx anon_vma %px vm_ops %px\n" in dump_vma()
213 vma->anon_vma, vma->vm_ops, vma->vm_pgoff, in dump_vma()
H A Dmlock.c541 *prev = vma_merge(mm, *prev, start, end, newflags, vma->anon_vma, in mlock_fixup()
/kernel/linux/linux-5.10/include/linux/
H A Drmap.h16 * The anon_vma heads a list of private "related" vmas, to scan if
17 * an anonymous page pointing to this anon_vma needs to be unmapped:
22 * directly to a vma: instead it points to an anon_vma, on whose list
26 * the anon_vma object itself: we're guaranteed no page can be
27 * pointing to this anon_vma once its vma list is empty.
29 struct anon_vma { struct
30 struct anon_vma *root; /* Root of this anon_vma tree */
33 * The refcount is taken on an anon_vma when there is no
37 * anon_vma i
82 struct anon_vma *anon_vma; global() member
108 get_anon_vma(struct anon_vma *anon_vma) get_anon_vma() argument
115 put_anon_vma(struct anon_vma *anon_vma) put_anon_vma() argument
121 anon_vma_lock_write(struct anon_vma *anon_vma) anon_vma_lock_write() argument
126 anon_vma_unlock_write(struct anon_vma *anon_vma) anon_vma_unlock_write() argument
131 anon_vma_lock_read(struct anon_vma *anon_vma) anon_vma_lock_read() argument
136 anon_vma_unlock_read(struct anon_vma *anon_vma) anon_vma_unlock_read() argument
[all...]
H A Dmm_types.h367 * A file's MAP_PRIVATE vma can be in both i_mmap tree and anon_vma
370 * or brk vma (with NULL file) can only be in an anon_vma list.
374 struct anon_vma *anon_vma; /* Serialized by page_table_lock */ member
H A Dmm.h36 struct anon_vma;
1593 extern struct anon_vma *page_anon_vma(struct page *page);
2580 unsigned long vm_flags, struct anon_vma *, struct file *, pgoff_t,
2582 extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *);
/kernel/linux/linux-6.6/mm/
H A Drmap.c30 * anon_vma->rwsem
45 * anon_vma->rwsem,mapping->i_mmap_rwsem (memory_failure, collect_procs_anon)
91 static inline struct anon_vma *anon_vma_alloc(void) in anon_vma_alloc()
93 struct anon_vma *anon_vma; in anon_vma_alloc() local
95 anon_vma = kmem_cache_alloc(anon_vma_cachep, GFP_KERNEL); in anon_vma_alloc()
96 if (anon_vma) { in anon_vma_alloc()
97 atomic_set(&anon_vma->refcount, 1); in anon_vma_alloc()
98 anon_vma->num_children = 0; in anon_vma_alloc()
99 anon_vma in anon_vma_alloc()
111 anon_vma_free(struct anon_vma *anon_vma) anon_vma_free() argument
151 anon_vma_chain_link(struct vm_area_struct *vma, struct anon_vma_chain *avc, struct anon_vma *anon_vma) anon_vma_chain_link() argument
192 struct anon_vma *anon_vma, *allocated; __anon_vma_prepare() local
245 lock_anon_vma_root(struct anon_vma *root, struct anon_vma *anon_vma) lock_anon_vma_root() argument
288 struct anon_vma *anon_vma; anon_vma_clone() local
339 struct anon_vma *anon_vma; anon_vma_fork() local
408 struct anon_vma *anon_vma = avc->anon_vma; unlink_anon_vmas() local
442 struct anon_vma *anon_vma = avc->anon_vma; unlink_anon_vmas() local
455 struct anon_vma *anon_vma = data; anon_vma_ctor() local
497 struct anon_vma *anon_vma = NULL; folio_get_anon_vma() local
542 struct anon_vma *anon_vma = NULL; folio_lock_anon_vma_read() local
1119 void *anon_vma = vma->anon_vma; page_move_anon_rmap() local
1146 struct anon_vma *anon_vma = vma->anon_vma; __page_set_anon_rmap() local
2389 __put_anon_vma(struct anon_vma *anon_vma) __put_anon_vma() argument
2401 struct anon_vma *anon_vma; rmap_walk_anon_lock() local
2443 struct anon_vma *anon_vma; rmap_walk_anon() local
2575 struct anon_vma *anon_vma = vma->anon_vma; hugepage_add_anon_rmap() local
[all...]
H A Dmmap.c297 struct anon_vma *anon_vma = vma->anon_vma; in validate_mm() local
321 if (anon_vma) { in validate_mm()
322 anon_vma_lock_read(anon_vma); in validate_mm()
325 anon_vma_unlock_read(anon_vma); in validate_mm()
342 * vma has some anon_vma assigned, and is already inserted on that
343 * anon_vma's interval trees.
346 * vma must be removed from the anon_vma's interval trees using
353 * the root anon_vma'
779 can_vma_merge_before(struct vm_area_struct *vma, unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) can_vma_merge_before() argument
802 can_vma_merge_after(struct vm_area_struct *vma, unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, pgoff_t vm_pgoff, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) can_vma_merge_after() argument
869 vma_merge(struct vma_iterator *vmi, struct mm_struct *mm, struct vm_area_struct *prev, unsigned long addr, unsigned long end, unsigned long vm_flags, struct anon_vma *anon_vma, struct file *file, pgoff_t pgoff, struct mempolicy *policy, struct vm_userfaultfd_ctx vm_userfaultfd_ctx, struct anon_vma_name *anon_name) vma_merge() argument
1094 struct anon_vma *anon_vma = READ_ONCE(old->anon_vma); reusable_anon_vma() local
1113 struct anon_vma *anon_vma = NULL; find_mergeable_anon_vma() local
3624 vm_lock_anon_vma(struct mm_struct *mm, struct anon_vma *anon_vma) vm_lock_anon_vma() argument
3759 vm_unlock_anon_vma(struct anon_vma *anon_vma) vm_unlock_anon_vma() argument
[all...]
H A Dmigrate.c1041 struct anon_vma *anon_vma) in __migrate_folio_record()
1043 dst->private = (void *)anon_vma + old_page_state; in __migrate_folio_record()
1048 struct anon_vma **anon_vmap) in __migrate_folio_extract()
1052 *anon_vmap = (struct anon_vma *)(private & ~PAGE_OLD_STATES); in __migrate_folio_extract()
1060 struct anon_vma *anon_vma, in migrate_folio_undo_src()
1066 /* Drop an anon_vma reference if we took one */ in migrate_folio_undo_src()
1067 if (anon_vma) in migrate_folio_undo_src()
1068 put_anon_vma(anon_vma); in migrate_folio_undo_src()
1039 __migrate_folio_record(struct folio *dst, int old_page_state, struct anon_vma *anon_vma) __migrate_folio_record() argument
1058 migrate_folio_undo_src(struct folio *src, int page_was_mapped, struct anon_vma *anon_vma, bool locked, struct list_head *ret) migrate_folio_undo_src() argument
1114 struct anon_vma *anon_vma = NULL; migrate_folio_unmap() local
1275 struct anon_vma *anon_vma = NULL; migrate_folio_move() local
1372 struct anon_vma *anon_vma = NULL; unmap_and_move_huge_page() local
1809 struct anon_vma *anon_vma = NULL; migrate_pages_batch() local
[all...]
H A Dksm.c188 * @anon_vma: pointer to anon_vma for this mm,address, when in stable tree
200 struct anon_vma *anon_vma; /* when stable */ member
562 if (!vma || !(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in find_mergeable_vma()
575 * to undo, we also need to drop a reference to the anon_vma. in break_cow()
577 put_anon_vma(rmap_item->anon_vma); in break_cow()
687 put_anon_vma(rmap_item->anon_vma); in remove_node_from_stable_tree()
839 put_anon_vma(rmap_item->anon_vma); in remove_rmap_item_from_tree()
1043 if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in unmerge_and_remove_all_rmap_items()
2797 struct anon_vma *anon_vma = folio_anon_vma(folio); ksm_might_need_to_copy() local
2857 struct anon_vma *anon_vma = rmap_item->anon_vma; rmap_walk_ksm() local
[all...]
H A Dmremap.c109 if (vma->anon_vma) in take_rmap_locks()
110 anon_vma_lock_write(vma->anon_vma); in take_rmap_locks()
115 if (vma->anon_vma) in drop_rmap_locks()
116 anon_vma_unlock_write(vma->anon_vma); in drop_rmap_locks()
149 * When need_rmap_locks is true, we take the i_mmap_rwsem and anon_vma in move_ptes()
706 * anon_vma links of the old vma is no longer needed after its page in move_vma()
1057 extension_end, vma->vm_flags, vma->anon_vma, in SYSCALL_DEFINE5()
H A Dhuge_memory.c143 * though anon_vma is not initialized yet. in hugepage_vma_check()
145 * Allow page fault since anon_vma may be not initialized until in hugepage_vma_check()
148 if (!vma->anon_vma) in hugepage_vma_check()
1299 VM_BUG_ON_VMA(!vma->anon_vma, vma); in do_huge_pmd_wp_page()
2621 * Returns -EBUSY if the page is pinned or if anon_vma disappeared from under
2629 struct anon_vma *anon_vma = NULL; in split_huge_page_to_list() local
2650 * prevent the anon_vma disappearing so we first we take a in split_huge_page_to_list()
2651 * reference to it and then lock the anon_vma for write. This in split_huge_page_to_list()
2656 anon_vma in split_huge_page_to_list()
[all...]
H A Dinternal.h719 struct anon_vma *folio_anon_vma(struct folio *folio);
1293 struct anon_vma *anon_vma; member
H A Ddebug.c151 "prot %lx anon_vma %px vm_ops %px\n" in dump_vma()
156 vma->anon_vma, vma->vm_ops, vma->vm_pgoff, in dump_vma()
H A Dkhugepaged.c936 if (expect_anon && (!(*vmap)->anon_vma || !vma_is_anonymous(*vmap))) in hugepage_vma_revalidate()
1137 * handled by the anon_vma lock + PG_lock. in collapse_huge_page()
1149 anon_vma_lock_write(vma->anon_vma); in collapse_huge_page()
1190 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page()
1195 * All pages are isolated and locked so anon_vma rmap in collapse_huge_page()
1198 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page()
1694 * Check vma->anon_vma to exclude MAP_PRIVATE mappings that in retract_page_tables()
1698 if (READ_ONCE(vma->anon_vma)) in retract_page_tables()
1734 * must remain empty; and we have already skipped anon_vma in retract_page_tables()
1738 * repeating the anon_vma chec in retract_page_tables()
[all...]
/kernel/linux/linux-6.6/include/linux/
H A Drmap.h18 * The anon_vma heads a list of private "related" vmas, to scan if
19 * an anonymous page pointing to this anon_vma needs to be unmapped:
24 * directly to a vma: instead it points to an anon_vma, on whose list
28 * the anon_vma object itself: we're guaranteed no page can be
29 * pointing to this anon_vma once its vma list is empty.
31 struct anon_vma { struct
32 struct anon_vma *root; /* Root of this anon_vma tree */
35 * The refcount is taken on an anon_vma when there is no
39 * anon_vma i
84 struct anon_vma *anon_vma; global() member
106 get_anon_vma(struct anon_vma *anon_vma) get_anon_vma() argument
113 put_anon_vma(struct anon_vma *anon_vma) put_anon_vma() argument
119 anon_vma_lock_write(struct anon_vma *anon_vma) anon_vma_lock_write() argument
124 anon_vma_unlock_write(struct anon_vma *anon_vma) anon_vma_unlock_write() argument
129 anon_vma_lock_read(struct anon_vma *anon_vma) anon_vma_lock_read() argument
134 anon_vma_trylock_read(struct anon_vma *anon_vma) anon_vma_trylock_read() argument
139 anon_vma_unlock_read(struct anon_vma *anon_vma) anon_vma_unlock_read() argument
[all...]
H A Dmm_types.h265 * @mapping: The file this page belongs to, or refers to the anon_vma for
625 * A file's MAP_PRIVATE vma can be in both i_mmap tree and anon_vma
628 * or brk vma (with NULL file) can only be in an anon_vma list.
632 struct anon_vma *anon_vma; /* Serialized by page_table_lock */ member
/kernel/linux/linux-5.10/fs/
H A Duserfaultfd.c870 new_flags, vma->anon_vma, in userfaultfd_release()
1412 vma->anon_vma, vma->vm_file, vma->vm_pgoff, in userfaultfd_register()
1583 vma->anon_vma, vma->vm_file, vma->vm_pgoff, in userfaultfd_unregister()
/kernel/linux/linux-6.6/fs/
H A Duserfaultfd.c926 new_flags, vma->anon_vma, in userfaultfd_release()
1483 vma->anon_vma, vma->vm_file, pgoff, in userfaultfd_register()
1669 vma->anon_vma, vma->vm_file, pgoff, in userfaultfd_unregister()

Completed in 48 milliseconds

12