diff options
| -rw-r--r-- | mm/swap_state.c | 5 | ||||
| -rw-r--r-- | mm/swapfile.c | 6 |
2 files changed, 5 insertions, 6 deletions
diff --git a/mm/swap_state.c b/mm/swap_state.c index bfb0d7d6433e..4e166f1c692c 100644 --- a/mm/swap_state.c +++ b/mm/swap_state.c @@ -469,11 +469,10 @@ struct page *swapin_readahead(swp_entry_t entry, gfp_t gfp_mask, unsigned long entry_offset = swp_offset(entry); unsigned long offset = entry_offset; unsigned long start_offset, end_offset; - unsigned long mask = is_swap_fast(entry) ? 0 : - (1UL << page_cluster) - 1; + unsigned long mask; struct blk_plug plug; - mask = swapin_nr_pages(offset) - 1; + mask = is_swap_fast(entry) ? 0 : swapin_nr_pages(offset) - 1; if (!mask) goto skip; diff --git a/mm/swapfile.c b/mm/swapfile.c index 6522b8bbe178..c86c3fd4fc00 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -2554,11 +2554,11 @@ SYSCALL_DEFINE2(swapon, const char __user *, specialfile, int, swap_flags) pr_err("swapon: discard_swap(%p): %d\n", p, err); } - - if (blk_queue_fast(bdev_get_queue(p->bdev))) - p->flags |= SWP_FAST; } + if (p->bdev && blk_queue_fast(bdev_get_queue(p->bdev))) + p->flags |= SWP_FAST; + mutex_lock(&swapon_mutex); prio = -1; if (swap_flags & SWAP_FLAG_PREFER) |
