Updated to 2.6.32.27
/mm/nommu.c
blob:9876fa0c3ad30e75d842f965ac4417e66be6f07a -> blob:406e8d47ce49f76180667647cffc717b029ff950
--- mm/nommu.c
+++ mm/nommu.c
@@ -608,7 +608,7 @@ static void protect_vma(struct vm_area_s
*/
static void add_vma_to_mm(struct mm_struct *mm, struct vm_area_struct *vma)
{
- struct vm_area_struct *pvma, **pp;
+ struct vm_area_struct *pvma, **pp, *next;
struct address_space *mapping;
struct rb_node **p, *parent;
@@ -668,8 +668,11 @@ static void add_vma_to_mm(struct mm_stru
break;
}
- vma->vm_next = *pp;
+ next = *pp;
*pp = vma;
+ vma->vm_next = next;
+ if (next)
+ next->vm_prev = vma;
}
/*
@@ -1612,6 +1615,7 @@ void exit_mmap(struct mm_struct *mm)
mm->mmap = vma->vm_next;
delete_vma_from_mm(vma);
delete_vma(mm, vma);
+ cond_resched();
}
kleave("");