]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - mm/swap_state.c
x86/mm: Drop usage of __flush_tlb_all() in kernel_physical_mapping_init()
[mirror_ubuntu-bionic-kernel.git] / mm / swap_state.c
index 326439428daffd6c1da5e5cd5b50652ead47568d..6dac8c6ee6d9c77a1e64bef3dc31c7df6f06d12e 100644 (file)
@@ -36,9 +36,9 @@ static const struct address_space_operations swap_aops = {
 #endif
 };
 
-struct address_space *swapper_spaces[MAX_SWAPFILES];
-static unsigned int nr_swapper_spaces[MAX_SWAPFILES];
-bool swap_vma_readahead = true;
+struct address_space *swapper_spaces[MAX_SWAPFILES] __read_mostly;
+static unsigned int nr_swapper_spaces[MAX_SWAPFILES] __read_mostly;
+bool swap_vma_readahead __read_mostly = false;
 
 #define SWAP_RA_WIN_SHIFT      (PAGE_SHIFT / 2)
 #define SWAP_RA_HITS_MASK      ((1UL << SWAP_RA_WIN_SHIFT) - 1)
@@ -319,7 +319,7 @@ void free_pages_and_swap_cache(struct page **pages, int nr)
        lru_add_drain();
        for (i = 0; i < nr; i++)
                free_swap_cache(pagep[i]);
-       release_pages(pagep, nr, false);
+       release_pages(pagep, nr);
 }
 
 /*
@@ -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++) {