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@xxxxxxxxxxxx> --- 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@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>