gpio: Add missing open drain/source handling to gpiod_set_value_cansleep()
[linux-2.6-microblaze.git] / mm / swap_state.c
index 05b6803..39ae7cf 100644 (file)
@@ -1,3 +1,4 @@
+// SPDX-License-Identifier: GPL-2.0
 /*
  *  linux/mm/swap_state.c
  *
@@ -35,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 = true;
 
 #define SWAP_RA_WIN_SHIFT      (PAGE_SHIFT / 2)
 #define SWAP_RA_HITS_MASK      ((1UL << SWAP_RA_WIN_SHIFT) - 1)
@@ -318,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);
 }
 
 /*
@@ -558,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;
 
@@ -571,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++) {