aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/mm/swapfile.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/swapfile.c')
-rw-r--r--mm/swapfile.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/mm/swapfile.c b/mm/swapfile.c
index c74c9e1dc50d..1743386d2401 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -629,17 +629,15 @@ new_cluster:
tmp = cluster->next;
max = min_t(unsigned long, si->max,
(cluster_next(&cluster->index) + 1) * SWAPFILE_CLUSTER);
- if (tmp >= max) {
- cluster_set_null(&cluster->index);
- goto new_cluster;
- }
- ci = lock_cluster(si, tmp);
- while (tmp < max) {
- if (!si->swap_map[tmp])
- break;
- tmp++;
+ if (tmp < max) {
+ ci = lock_cluster(si, tmp);
+ while (tmp < max) {
+ if (!si->swap_map[tmp])
+ break;
+ tmp++;
+ }
+ unlock_cluster(ci);
}
- unlock_cluster(ci);
if (tmp >= max) {
cluster_set_null(&cluster->index);
goto new_cluster;