1269 else {
1270 err = -ENOMEM;
1271 spin_unlock(&swap_lock);
1272 goto out_dput;
1273 }
1274 if (prev < 0) {
1275 swap_list.head = p->next;
1276 } else {
1277 swap_info[prev].next = p->next;
1278 }
1279 if (type == swap_list.next) {
1280
1281 swap_list.next = swap_list.head;
1282 }
1283 if (p->prio < 0) {
1284 for (i = p->next; i >= 0; i = swap_info[i].next)
1285 swap_info[i].prio = p->prio--;
1286 least_priority++;
1287 }
1288 nr_swap_pages -= p->pages;
1289 total_swap_pages -= p->pages;
1290 p->flags &= ~SWP_WRITEOK;
1291 spin_unlock(&swap_lock);
1292
1293 current->flags |= PF_SWAPOFF;
1294 err = try_to_unuse(type);
1295 current->flags &= ~PF_SWAPOFF;
1296
1297 if (err) {
1298
1299 spin_lock(&swap_lock);
1300 if (p->prio < 0)
1301 p->prio = --least_priority;
1302 prev = -1;
1303 for (i = swap_list.head; i >= 0; i = swap_info[i].next) {
1304 if (p->prio >= swap_info[i].prio)
1305 break;
1306 prev = i;
1307 }
1308 p->next = i;
1309 if (prev < 0)