On Thu, Nov 02, 2017 at 01:42:25PM +0800, Huang, Ying wrote: > From: Huang Ying <huang.ying.caritas@xxxxxxxxx> > > When a page fault occurs for a swap entry, the physical swap readahead > (not the VMA base swap readahead) may readahead several swap entries > after the fault swap entry. The readahead algorithm calculates some > of the swap entries to readahead via increasing the offset of the > fault swap entry without checking whether they are beyond the end of > the swap device and it relys on the __swp_swapcount() and > swapcache_prepare() to check it. Although __swp_swapcount() checks > for the swap entry passed in, it will complain with the error message > as follow for the expected invalid swap entry. This may make the end > users confused. > > swap_info_get: Bad swap offset entry 0200f8a7 > > To fix the false error message, the swap entry checking is added in > swapin_readahead() to avoid to pass the out-of-bound swap entries and > the swap entry reserved for the swap header to __swp_swapcount() and > swapcache_prepare(). > > Cc: Tim Chen <tim.c.chen@xxxxxxxxxxxxxxx> > Cc: Michal Hocko <mhocko@xxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # 4.11-4.13 > Fixes: e8c26ab60598 ("mm/swap: skip readahead for unreferenced swap slots") > Reported-by: Christian Kujau <lists@xxxxxxxxxxxxxxx> > Suggested-by: Minchan Kim <minchan@xxxxxxxxxx> > Signed-off-by: "Huang, Ying" <ying.huang@xxxxxxxxx> Acked-by: Minchan Kim <minchan@xxxxxxxxxx>