anon_vma_chain
void anon_vma_interval_tree_insert(struct anon_vma_chain *node,
void anon_vma_interval_tree_remove(struct anon_vma_chain *node,
struct anon_vma_chain *
struct anon_vma_chain *anon_vma_interval_tree_iter_next(
struct anon_vma_chain *node, unsigned long start, unsigned long last);
void anon_vma_interval_tree_verify(struct anon_vma_chain *node);
struct anon_vma_chain;
INIT_LIST_HEAD(&vma->anon_vma_chain);
struct list_head anon_vma_chain; /* Serialized by mmap_lock &
void anon_vma_interval_tree_verify(struct anon_vma_chain *node)
static inline unsigned long avc_start_pgoff(struct anon_vma_chain *avc)
static inline unsigned long avc_last_pgoff(struct anon_vma_chain *avc)
INTERVAL_TREE_DEFINE(struct anon_vma_chain, rb, unsigned long, rb_subtree_last,
void anon_vma_interval_tree_insert(struct anon_vma_chain *node,
void anon_vma_interval_tree_remove(struct anon_vma_chain *node,
struct anon_vma_chain *
struct anon_vma_chain *
anon_vma_interval_tree_iter_next(struct anon_vma_chain *node,
struct anon_vma_chain *vmac;
struct anon_vma_chain *vmac;
struct anon_vma_chain *vmac;
static inline struct anon_vma_chain *anon_vma_chain_alloc(gfp_t gfp)
static void anon_vma_chain_free(struct anon_vma_chain *anon_vma_chain)
kmem_cache_free(anon_vma_chain_cachep, anon_vma_chain);
struct anon_vma_chain *avc,
list_add(&avc->same_vma, &vma->anon_vma_chain);
struct anon_vma_chain *avc;
VM_WARN_ON_ONCE(!src->anon_vma && !list_empty(&src->anon_vma_chain));
VM_WARN_ON_ONCE(!list_empty(&dst->anon_vma_chain));
!list_is_singular(&src->anon_vma_chain));
struct anon_vma_chain *avc;
struct anon_vma_chain *avc, *pavc;
list_for_each_entry(pavc, &src->anon_vma_chain, same_vma) {
list_for_each_entry_reverse(avc, &dst->anon_vma_chain, same_vma) {
struct anon_vma_chain *avc;
struct anon_vma_chain *avc, *next;
list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) {
struct anon_vma_chain *avc, *next;
VM_WARN_ON_ONCE(!list_empty(&vma->anon_vma_chain));
list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) {
list_for_each_entry_safe(avc, next, &vma->anon_vma_chain, same_vma) {
anon_vma_chain_cachep = KMEM_CACHE(anon_vma_chain,
if (anon_vma && list_is_singular(&old->anon_vma_chain))
struct anon_vma_chain *avc;
list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
struct anon_vma_chain *avc;
list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
struct anon_vma_chain *avc;
list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
struct anon_vma_chain *avc;
list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
struct anon_vma_chain *avc;
list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
return vma && vma->anon_vma && !list_is_singular(&vma->anon_vma_chain);
INIT_LIST_HEAD(&new->anon_vma_chain);
INIT_LIST_HEAD(&vma->anon_vma_chain);
struct list_head anon_vma_chain; /* Serialized by mmap_lock &
struct anon_vma_chain;
static inline void anon_vma_interval_tree_insert(struct anon_vma_chain *avc,
static inline void anon_vma_interval_tree_remove(struct anon_vma_chain *avc,
struct anon_vma_chain *avc, struct anon_vma *anon_vma)
INIT_LIST_HEAD(&vma->anon_vma_chain);
list_add(&avc->same_vma, &vma->anon_vma_chain);
struct anon_vma_chain *avc)
struct anon_vma_chain *avc, struct anon_vma *anon_vma);
struct anon_vma_chain *avc);
struct anon_vma_chain dummy_anon_vma_chain_1 = {};
struct anon_vma_chain dummy_anon_vma_chain_2 = {};
struct anon_vma_chain dummy_anon_vma_chain = {
INIT_LIST_HEAD(&vma_next->anon_vma_chain);
list_add(&dummy_anon_vma_chain.same_vma, &vma_next->anon_vma_chain);
struct anon_vma_chain avc = {};
struct anon_vma_chain dummy_anon_vma_chain_a = {
struct anon_vma_chain dummy_anon_vma_chain_b = {
struct anon_vma_chain dummy_anon_vma_chain_c = {
struct anon_vma_chain dummy_anon_vma_chain_d = {
INIT_LIST_HEAD(&vma_a->anon_vma_chain);
list_add(&dummy_anon_vma_chain_a.same_vma, &vma_a->anon_vma_chain);
INIT_LIST_HEAD(&vma_b->anon_vma_chain);
list_add(&dummy_anon_vma_chain_b.same_vma, &vma_b->anon_vma_chain);
INIT_LIST_HEAD(&vma_c->anon_vma_chain);
list_add(&dummy_anon_vma_chain_c.same_vma, &vma_c->anon_vma_chain);
INIT_LIST_HEAD(&vma_d->anon_vma_chain);
list_add(&dummy_anon_vma_chain_d.same_vma, &vma_d->anon_vma_chain);
struct anon_vma_chain avc = {};