diff --git a/mm/swapfile.c b/mm/swapfile.c index df3dc7a3c2e299b03bf807e31e36775ab384b76a..465d972f4c7c24e15ec6c27420c36682e053df6f 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1625,6 +1625,10 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) spin_lock(&swap_lock); if (p->prio < 0) p->prio = --least_priority; + p->flags |= SWP_WRITEOK; + nr_swap_pages += p->pages; + total_swap_pages += p->pages; + prev = -1; for (i = swap_list.head; i >= 0; i = swap_info[i]->next) { if (p->prio >= swap_info[i]->prio) @@ -1636,9 +1640,6 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) swap_list.head = swap_list.next = type; else swap_info[prev]->next = type; - nr_swap_pages += p->pages; - total_swap_pages += p->pages; - p->flags |= SWP_WRITEOK; spin_unlock(&swap_lock); goto out_dput; }