]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - mm/page_alloc.c
UBUNTU: [Config] CONFIG_NET_DSA_LOOP=m
[mirror_ubuntu-artful-kernel.git] / mm / page_alloc.c
index 7a58eb5757e3bd61d9dadfd8d851b9641454552d..6ce930c02160d55dc4eee1e7197a5efa6ba7d44a 100644 (file)
@@ -3291,10 +3291,13 @@ __alloc_pages_may_oom(gfp_t gfp_mask, unsigned int order,
        /*
         * Go through the zonelist yet one more time, keep very high watermark
         * here, this is only to catch a parallel oom killing, we must fail if
-        * we're still under heavy pressure.
+        * we're still under heavy pressure. But make sure that this reclaim
+        * attempt shall not depend on __GFP_DIRECT_RECLAIM && !__GFP_NORETRY
+        * allocation which will never fail due to oom_lock already held.
         */
-       page = get_page_from_freelist(gfp_mask | __GFP_HARDWALL, order,
-                                       ALLOC_WMARK_HIGH|ALLOC_CPUSET, ac);
+       page = get_page_from_freelist((gfp_mask | __GFP_HARDWALL) &
+                                     ~__GFP_DIRECT_RECLAIM, order,
+                                     ALLOC_WMARK_HIGH|ALLOC_CPUSET, ac);
        if (page)
                goto out;
 
@@ -7689,8 +7692,6 @@ int alloc_contig_range(unsigned long start, unsigned long end,
 
        /* Make sure the range is really isolated. */
        if (test_pages_isolated(outer_start, end, false)) {
-               pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",
-                       __func__, outer_start, end);
                ret = -EBUSY;
                goto done;
        }