X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=mm%2Futil.c;h=88ea1bd661c0f5164e37a8415050808fa815808f;hb=df80442d1ee2902c2e39f90f18160f2e08d14c06;hp=e7b103a6fd21c50857eda25cb5750e6d319e6498;hpb=751516f0a9bad32544f40f471037c0e45fb639c9;p=firefly-linux-kernel-4.4.55.git diff --git a/mm/util.c b/mm/util.c index e7b103a6fd21..88ea1bd661c0 100644 --- a/mm/util.c +++ b/mm/util.c @@ -6,6 +6,8 @@ #include #include +#include "internal.h" + #define CREATE_TRACE_POINTS #include @@ -215,6 +217,28 @@ char *strndup_user(const char __user *s, long n) } EXPORT_SYMBOL(strndup_user); +void __vma_link_list(struct mm_struct *mm, struct vm_area_struct *vma, + struct vm_area_struct *prev, struct rb_node *rb_parent) +{ + struct vm_area_struct *next; + + vma->vm_prev = prev; + if (prev) { + next = prev->vm_next; + prev->vm_next = vma; + } else { + mm->mmap = vma; + if (rb_parent) + next = rb_entry(rb_parent, + struct vm_area_struct, vm_rb); + else + next = NULL; + } + vma->vm_next = next; + if (next) + next->vm_prev = vma; +} + #if defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT) void arch_pick_mmap_layout(struct mm_struct *mm) {