linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [patch 2/4 v3]swap: __swap_duplicate check bad swap entry
@ 2013-02-21  2:22 Shaohua Li
  2013-03-12  1:45 ` Rafael Aquini
  0 siblings, 1 reply; 3+ messages in thread
From: Shaohua Li @ 2013-02-21  2:22 UTC (permalink / raw)
  To: linux-mm; +Cc: hughd, riel, minchan, kmpark

Sorry if you receive this one twice, last mail get mail address messed.

In swapin_readahead(), read_swap_cache_async() can read a bad swap entry,
because we don't check if readahead swap entry is bad. This doesn't break
anything but such swapin page is wasteful and can only be freed at page
reclaim. We avoid read such swap entry.

And next patch will mark a swap entry bad temporarily for discard. Without this
patch, swap entry count will be messed.

Thanks Hugh to inspire swapin_readahead could use bad swap entry.

Signed-off-by: Shaohua Li <shli@fusionio.com>
---
 mm/swapfile.c |    5 +++++
 1 file changed, 5 insertions(+)

Index: linux/mm/swapfile.c
===================================================================
--- linux.orig/mm/swapfile.c	2013-02-18 15:21:09.285317914 +0800
+++ linux/mm/swapfile.c	2013-02-18 15:21:34.545004083 +0800
@@ -2374,6 +2374,11 @@ static int __swap_duplicate(swp_entry_t
 		goto unlock_out;
 
 	count = p->swap_map[offset];
+	if (unlikely(swap_count(count) == SWAP_MAP_BAD)) {
+		err = -ENOENT;
+		goto unlock_out;
+	}
+
 	has_cache = count & SWAP_HAS_CACHE;
 	count &= ~SWAP_HAS_CACHE;
 	err = 0;

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

^ permalink raw reply	[flat|nested] 3+ messages in thread
[parent not found: <20130221021738.GB32580@kernel.org>]

end of thread, other threads:[~2013-03-19 21:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-21  2:22 [patch 2/4 v3]swap: __swap_duplicate check bad swap entry Shaohua Li
2013-03-12  1:45 ` Rafael Aquini
     [not found] <20130221021738.GB32580@kernel.org>
2013-03-19 21:34 ` Hugh Dickins

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).