|
@@ -559,6 +559,7 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
|
|
|
unsigned long offset = entry_offset;
|
|
|
unsigned long start_offset, end_offset;
|
|
|
unsigned long mask;
|
|
|
+ struct swap_info_struct *si = swp_swap_info(entry);
|
|
|
struct blk_plug plug;
|
|
|
bool do_poll = true, page_allocated;
|
|
|
|
|
@@ -572,6 +573,8 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask,
|
|
|
end_offset = offset | mask;
|
|
|
if (!start_offset) /* First page is swap header. */
|
|
|
start_offset++;
|
|
|
+ if (end_offset >= si->max)
|
|
|
+ end_offset = si->max - 1;
|
|
|
|
|
|
blk_start_plug(&plug);
|
|
|
for (offset = start_offset; offset <= end_offset ; offset++) {
|