diff --git a/mm/swapfile.c b/mm/swapfile.c index 42fd620dcf4cf3fb00a68c08f5389a1067213f7c..53b5881ee0d69ecd7cdc275e61c56b7c5f38f908 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -672,6 +672,9 @@ static int scan_swap_map_slots(struct swap_info_struct *si, else goto done; } + si->swap_map[offset] = usage; + inc_cluster_info_page(si, si->cluster_info, offset); + unlock_cluster(ci); if (offset == si->lowest_bit) si->lowest_bit++; @@ -685,9 +688,6 @@ static int scan_swap_map_slots(struct swap_info_struct *si, plist_del(&si->avail_list, &swap_avail_head); spin_unlock(&swap_avail_lock); } - si->swap_map[offset] = usage; - inc_cluster_info_page(si, si->cluster_info, offset); - unlock_cluster(ci); si->cluster_next = offset + 1; slots[n_ret++] = swp_entry(si->type, offset);