|
@@ -815,20 +815,20 @@ copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm,
|
|
|
if (!pte_file(pte)) {
|
|
|
swp_entry_t entry = pte_to_swp_entry(pte);
|
|
|
|
|
|
- if (swap_duplicate(entry) < 0)
|
|
|
- return entry.val;
|
|
|
-
|
|
|
- /* make sure dst_mm is on swapoff's mmlist. */
|
|
|
- if (unlikely(list_empty(&dst_mm->mmlist))) {
|
|
|
- spin_lock(&mmlist_lock);
|
|
|
- if (list_empty(&dst_mm->mmlist))
|
|
|
- list_add(&dst_mm->mmlist,
|
|
|
- &src_mm->mmlist);
|
|
|
- spin_unlock(&mmlist_lock);
|
|
|
- }
|
|
|
- if (likely(!non_swap_entry(entry)))
|
|
|
+ if (likely(!non_swap_entry(entry))) {
|
|
|
+ if (swap_duplicate(entry) < 0)
|
|
|
+ return entry.val;
|
|
|
+
|
|
|
+ /* make sure dst_mm is on swapoff's mmlist. */
|
|
|
+ if (unlikely(list_empty(&dst_mm->mmlist))) {
|
|
|
+ spin_lock(&mmlist_lock);
|
|
|
+ if (list_empty(&dst_mm->mmlist))
|
|
|
+ list_add(&dst_mm->mmlist,
|
|
|
+ &src_mm->mmlist);
|
|
|
+ spin_unlock(&mmlist_lock);
|
|
|
+ }
|
|
|
rss[MM_SWAPENTS]++;
|
|
|
- else if (is_migration_entry(entry)) {
|
|
|
+ } else if (is_migration_entry(entry)) {
|
|
|
page = migration_entry_to_page(entry);
|
|
|
|
|
|
if (PageAnon(page))
|