/Linux-v5.4/mm/ |
D | rmap.c | 79 static inline struct anon_vma *anon_vma_alloc(void) in anon_vma_alloc() 81 struct anon_vma *anon_vma; in anon_vma_alloc() local 83 anon_vma = kmem_cache_alloc(anon_vma_cachep, GFP_KERNEL); in anon_vma_alloc() 84 if (anon_vma) { in anon_vma_alloc() 85 atomic_set(&anon_vma->refcount, 1); in anon_vma_alloc() 86 anon_vma->degree = 1; /* Reference for first vma */ in anon_vma_alloc() 87 anon_vma->parent = anon_vma; in anon_vma_alloc() 92 anon_vma->root = anon_vma; in anon_vma_alloc() 95 return anon_vma; in anon_vma_alloc() 98 static inline void anon_vma_free(struct anon_vma *anon_vma) in anon_vma_free() argument [all …]
|
D | mmap.c | 403 struct anon_vma *anon_vma = vma->anon_vma; in validate_mm() local 406 if (anon_vma) { in validate_mm() 407 anon_vma_lock_read(anon_vma); in validate_mm() 410 anon_vma_unlock_read(anon_vma); in validate_mm() 522 anon_vma_interval_tree_remove(avc, &avc->anon_vma->rb_root); in anon_vma_interval_tree_pre_update_vma() 531 anon_vma_interval_tree_insert(avc, &avc->anon_vma->rb_root); in anon_vma_interval_tree_post_update_vma() 733 struct anon_vma *anon_vma = NULL; in __vma_adjust() local 785 if (remove_next == 2 && !next->anon_vma) in __vma_adjust() 814 if (exporter && exporter->anon_vma && !importer->anon_vma) { in __vma_adjust() 817 importer->anon_vma = exporter->anon_vma; in __vma_adjust() [all …]
|
D | ksm.c | 198 struct anon_vma *anon_vma; /* when stable */ member 528 if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in find_mergeable_vma() 543 put_anon_vma(rmap_item->anon_vma); in break_cow() 645 put_anon_vma(rmap_item->anon_vma); in remove_node_from_stable_tree() 795 put_anon_vma(rmap_item->anon_vma); in remove_rmap_item_from_tree() 983 if (!(vma->vm_flags & VM_MERGEABLE) || !vma->anon_vma) in unmerge_and_remove_all_rmap_items() 1296 rmap_item->anon_vma = vma->anon_vma; in try_to_merge_with_ksm_page() 1297 get_anon_vma(vma->anon_vma); in try_to_merge_with_ksm_page() 2291 if (!vma->anon_vma) in scan_get_next_rmap_item() 2469 if (vma->anon_vma) { in ksm_madvise() [all …]
|
D | huge_memory.c | 1324 VM_BUG_ON_VMA(!vma->anon_vma, vma); in do_huge_pmd_wp_page() 1536 struct anon_vma *anon_vma = NULL; in do_huge_pmd_numa_page() local 1606 anon_vma = page_lock_anon_vma_read(page); in do_huge_pmd_numa_page() 1618 if (unlikely(!anon_vma)) { in do_huge_pmd_numa_page() 1679 if (anon_vma) in do_huge_pmd_numa_page() 1680 page_unlock_anon_vma_read(anon_vma); in do_huge_pmd_numa_page() 2698 struct anon_vma *anon_vma = NULL; in split_huge_page_to_list() local 2721 anon_vma = page_get_anon_vma(head); in split_huge_page_to_list() 2722 if (!anon_vma) { in split_huge_page_to_list() 2728 anon_vma_lock_write(anon_vma); in split_huge_page_to_list() [all …]
|
D | mremap.c | 88 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()
|
D | migrate.c | 1009 struct anon_vma *anon_vma = NULL; in __unmap_and_move() local 1070 anon_vma = page_get_anon_vma(page); in __unmap_and_move() 1108 VM_BUG_ON_PAGE(PageAnon(page) && !PageKsm(page) && !anon_vma, in __unmap_and_move() 1126 if (anon_vma) in __unmap_and_move() 1127 put_anon_vma(anon_vma); in __unmap_and_move() 1288 struct anon_vma *anon_vma = NULL; in unmap_and_move_huge_page() local 1330 anon_vma = page_get_anon_vma(hpage); in unmap_and_move_huge_page() 1351 if (anon_vma) in unmap_and_move_huge_page() 1352 put_anon_vma(anon_vma); in unmap_and_move_huge_page()
|
D | debug.c | 128 vma->anon_vma, vma->vm_ops, vma->vm_pgoff, in dump_vma()
|
D | khugepaged.c | 424 if (!vma->anon_vma || vma->vm_ops) in hugepage_vma_check() 1029 anon_vma_lock_write(vma->anon_vma); in collapse_huge_page() 1064 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page() 1073 anon_vma_unlock_write(vma->anon_vma); in collapse_huge_page() 1441 if (vma->anon_vma) in retract_page_tables()
|
D | mprotect.c | 396 vma->anon_vma, vma->vm_file, pgoff, vma_policy(vma), in mprotect_fixup()
|
D | mlock.c | 536 *prev = vma_merge(mm, *prev, start, end, newflags, vma->anon_vma, in mlock_fixup()
|
D | util.c | 637 struct anon_vma *page_anon_vma(struct page *page) in page_anon_vma()
|
D | madvise.c | 135 *prev = vma_merge(mm, *prev, start, end, new_flags, vma->anon_vma, in madvise_behavior()
|
D | memory-failure.c | 443 struct anon_vma *av; in collect_procs_anon()
|
D | memory.c | 522 (void *)addr, vma->vm_flags, vma->anon_vma, mapping, index); in print_bad_pte() 955 !vma->anon_vma) in copy_page_range()
|
D | mempolicy.c | 761 vma->anon_vma, vma->vm_file, pgoff, in mbind_range()
|
D | swapfile.c | 2075 if (vma->anon_vma) { in unuse_mm()
|
/Linux-v5.4/include/linux/ |
D | rmap.h | 29 struct anon_vma { struct 30 struct anon_vma *root; /* Root of this anon_vma tree */ argument 49 struct anon_vma *parent; /* Parent of this anon_vma */ argument 79 struct anon_vma *anon_vma; member 105 static inline void get_anon_vma(struct anon_vma *anon_vma) in get_anon_vma() argument 107 atomic_inc(&anon_vma->refcount); in get_anon_vma() 110 void __put_anon_vma(struct anon_vma *anon_vma); 112 static inline void put_anon_vma(struct anon_vma *anon_vma) in put_anon_vma() argument 114 if (atomic_dec_and_test(&anon_vma->refcount)) in put_anon_vma() 115 __put_anon_vma(anon_vma); in put_anon_vma() [all …]
|
D | mm_types.h | 335 struct anon_vma *anon_vma; /* Serialized by page_table_lock */ member
|
D | mm.h | 32 struct anon_vma; 1348 extern struct anon_vma *page_anon_vma(struct page *page); 2275 unsigned long vm_flags, struct anon_vma *, struct file *, pgoff_t, 2277 extern struct anon_vma *find_mergeable_anon_vma(struct vm_area_struct *);
|
/Linux-v5.4/fs/ |
D | userfaultfd.c | 912 new_flags, vma->anon_vma, in userfaultfd_release() 1465 vma->anon_vma, vma->vm_file, vma->vm_pgoff, in userfaultfd_register() 1627 vma->anon_vma, vma->vm_file, vma->vm_pgoff, in userfaultfd_unregister()
|
D | binfmt_elf_fdpic.c | 1242 if (!vma->anon_vma) { in maydump()
|
D | binfmt_elf.c | 1344 if (vma->anon_vma && FILTER(ANON_PRIVATE)) in vma_dump_size()
|
/Linux-v5.4/Documentation/vm/ |
D | transhuge.rst | 103 takes the mmap_sem in write mode in addition to the anon_vma lock). If
|
/Linux-v5.4/kernel/ |
D | fork.c | 553 tmp->anon_vma = NULL; in dup_mmap()
|
/Linux-v5.4/security/selinux/ |
D | hooks.c | 3740 } else if (vma->vm_file && vma->anon_vma) { in selinux_file_mprotect()
|