]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - mm/swap_state.c
Merge tag 'pm-extra-4.12-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael...
[karo-tx-linux.git] / mm / swap_state.c
index 473b71e052a8ed29df7c496af747e2b43491c782..539b8885e3d1d4942dbb905b60b87d40726e3de5 100644 (file)
@@ -360,17 +360,7 @@ struct page *__read_swap_cache_async(swp_entry_t entry, gfp_t gfp_mask,
                        /*
                         * We might race against get_swap_page() and stumble
                         * across a SWAP_HAS_CACHE swap_map entry whose page
-                        * has not been brought into the swapcache yet, while
-                        * the other end is scheduled away waiting on discard
-                        * I/O completion at scan_swap_map().
-                        *
-                        * In order to avoid turning this transitory state
-                        * into a permanent loop around this -EEXIST case
-                        * if !CONFIG_PREEMPT and the I/O completion happens
-                        * to be waiting on the CPU waitqueue where we are now
-                        * busy looping, we just conditionally invoke the
-                        * scheduler here, if there are some more important
-                        * tasks to run.
+                        * has not been brought into the swapcache yet.
                         */
                        cond_resched();
                        continue;
@@ -533,7 +523,7 @@ int init_swap_address_space(unsigned int type, unsigned long nr_pages)
        unsigned int i, nr;
 
        nr = DIV_ROUND_UP(nr_pages, SWAP_ADDRESS_SPACE_PAGES);
-       spaces = vzalloc(sizeof(struct address_space) * nr);
+       spaces = kvzalloc(sizeof(struct address_space) * nr, GFP_KERNEL);
        if (!spaces)
                return -ENOMEM;
        for (i = 0; i < nr; i++) {