struct mm_struct *mm;
struct vm_area_struct *vma;
int err = 0;
- MA_STATE(mas, &mm->mm_mt, 0, 0);
spin_lock(&ksm_mmlist_lock);
ksm_scan.mm_slot = list_entry(ksm_mm_head.mm_list.next,
spin_unlock(&ksm_mmlist_lock);
for (mm_slot = ksm_scan.mm_slot;
- mm_slot != &ksm_mm_head; mm_slot = ksm_scan.mm_slot) {
- mm = mm_slot->mm;
+ mm_slot != &ksm_mm_head; mm_slot = ksm_scan.mm_slot, mm = mm_slot->mm) {
+ MA_STATE(mas, &mm->mm_mt, 0, 0);
+
mmap_read_lock(mm);
mas_set(&mas, 0);
mas_for_each(&mas, vma, ULONG_MAX) {
struct vm_area_struct *vma;
struct rmap_item *rmap_item;
int nid;
- MA_STATE(mas, &mm->mm_mt, 0, 0);
if (list_empty(&ksm_mm_head.mm_list))
return NULL;
}
mm = slot->mm;
+ MA_STATE(mas, &mm->mm_mt, 0, 0);
+
mmap_read_lock(mm);
if (ksm_test_exit(mm))
goto no_vmas;