Commit 33e16272 authored by Wei Yang's avatar Wei Yang Committed by Linus Torvalds
Browse files

mm/swapfile.c: __swap_entry_free() always free 1 entry

parent 4b4bb6bb
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -1273,13 +1273,14 @@ struct swap_info_struct *get_swap_device(swp_entry_t entry)
}

static unsigned char __swap_entry_free(struct swap_info_struct *p,
				       swp_entry_t entry, unsigned char usage)
				       swp_entry_t entry)
{
	struct swap_cluster_info *ci;
	unsigned long offset = swp_offset(entry);
	unsigned char usage;

	ci = lock_cluster_or_swap_info(p, offset);
	usage = __swap_entry_free_locked(p, offset, usage);
	usage = __swap_entry_free_locked(p, offset, 1);
	unlock_cluster_or_swap_info(p, ci);
	if (!usage)
		free_swap_slot(entry);
@@ -1314,7 +1315,7 @@ void swap_free(swp_entry_t entry)

	p = _swap_info_get(entry);
	if (p)
		__swap_entry_free(p, entry, 1);
		__swap_entry_free(p, entry);
}

/*
@@ -1737,7 +1738,7 @@ int free_swap_and_cache(swp_entry_t entry)

	p = _swap_info_get(entry);
	if (p) {
		count = __swap_entry_free(p, entry, 1);
		count = __swap_entry_free(p, entry);
		if (count == SWAP_HAS_CACHE &&
		    !swap_page_trans_huge_swapped(p, entry))
			__try_to_reclaim_swap(p, swp_offset(entry),