|
@@ -1403,6 +1403,9 @@ static void collapse_shmem(struct mm_struct *mm,
|
|
|
|
|
|
spin_lock_irq(&mapping->tree_lock);
|
|
|
|
|
|
+ slot = radix_tree_lookup_slot(&mapping->page_tree, index);
|
|
|
+ VM_BUG_ON_PAGE(page != radix_tree_deref_slot_protected(slot,
|
|
|
+ &mapping->tree_lock), page);
|
|
|
VM_BUG_ON_PAGE(page_mapped(page), page);
|
|
|
|
|
|
/*
|
|
@@ -1426,6 +1429,7 @@ static void collapse_shmem(struct mm_struct *mm,
|
|
|
radix_tree_replace_slot(slot,
|
|
|
new_page + (index % HPAGE_PMD_NR));
|
|
|
|
|
|
+ slot = radix_tree_iter_next(&iter);
|
|
|
index++;
|
|
|
continue;
|
|
|
out_lru:
|
|
@@ -1537,6 +1541,7 @@ tree_unlocked:
|
|
|
putback_lru_page(page);
|
|
|
unlock_page(page);
|
|
|
spin_lock_irq(&mapping->tree_lock);
|
|
|
+ slot = radix_tree_iter_next(&iter);
|
|
|
}
|
|
|
VM_BUG_ON(nr_none);
|
|
|
spin_unlock_irq(&mapping->tree_lock);
|