Browse Source

[PATCH] swapoff: use atomic_inc_not_zero() on mm_users

Now that we have atomic_inc_not_zero, it's more elegant for try_to_unuse to
use that on mm_users: doesn't actually matter at present, but safer to be
sure that once mm_users has gone to 0, nothing raises it for an instant.

Signed-off-by: Hugh Dickins <hugh@veritas.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Hugh Dickins 19 years ago
parent
commit
70af7c5c64
1 changed files with 1 additions and 3 deletions
  1. 1 3
      mm/swapfile.c

+ 1 - 3
mm/swapfile.c

@@ -772,10 +772,8 @@ static int try_to_unuse(unsigned int type)
 			while (*swap_map > 1 && !retval &&
 			while (*swap_map > 1 && !retval &&
 					(p = p->next) != &start_mm->mmlist) {
 					(p = p->next) != &start_mm->mmlist) {
 				mm = list_entry(p, struct mm_struct, mmlist);
 				mm = list_entry(p, struct mm_struct, mmlist);
-				if (atomic_inc_return(&mm->mm_users) == 1) {
-					atomic_dec(&mm->mm_users);
+				if (!atomic_inc_not_zero(&mm->mm_users))
 					continue;
 					continue;
-				}
 				spin_unlock(&mmlist_lock);
 				spin_unlock(&mmlist_lock);
 				mmput(prev_mm);
 				mmput(prev_mm);
 				prev_mm = mm;
 				prev_mm = mm;