Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 70af7c5c authored by Hugh Dickins's avatar Hugh Dickins Committed by Linus Torvalds
Browse files

[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: default avatarHugh Dickins <hugh@veritas.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9637a5ef
Loading
Loading
Loading
Loading
+1 −3
Original line number Original line Diff line number Diff line
@@ -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) {
				if (!atomic_inc_not_zero(&mm->mm_users))
					atomic_dec(&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;