]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.8-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 Nov 2016 16:43:08 +0000 (17:43 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 29 Nov 2016 16:43:08 +0000 (17:43 +0100)
added patches:
mm-oom-stop-pre-mature-high-order-oom-killer-invocations.patch

queue-4.8/mm-oom-stop-pre-mature-high-order-oom-killer-invocations.patch [new file with mode: 0644]
queue-4.8/series

diff --git a/queue-4.8/mm-oom-stop-pre-mature-high-order-oom-killer-invocations.patch b/queue-4.8/mm-oom-stop-pre-mature-high-order-oom-killer-invocations.patch
new file mode 100644 (file)
index 0000000..9bed636
--- /dev/null
@@ -0,0 +1,49 @@
+From mhocko@kernel.org  Tue Nov 29 17:42:17 2016
+From: Michal Hocko <mhocko@kernel.org>
+Date: Tue, 29 Nov 2016 17:25:15 +0100
+Subject: mm, oom: stop pre-mature high-order OOM killer invocations
+To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Stable tree <stable@vger.kernel.org>
+Cc: Vlastimil Babka <vbabka@suse.cz>, Marc MERLIN <marc@merlins.org>, linux-mm@kvack.org, Linus Torvalds <torvalds@linux-foundation.org>, LKML <linux-kernel@vger.kernel.org>, Joonsoo Kim <iamjoonsoo.kim@lge.com>, Tejun Heo <tj@kernel.org>
+Message-ID: <20161129162515.GD9796@dhcp22.suse.cz>
+Content-Disposition: inline
+
+From: Michal Hocko <mhocko@suse.com>
+
+31e49bfda184 ("mm, oom: protect !costly allocations some more for
+!CONFIG_COMPACTION") was an attempt to reduce chances of pre-mature OOM
+killer invocation for high order requests. It seemed to work for most
+users just fine but it is far from bullet proof and obviously not
+sufficient for Marc who has reported pre-mature OOM killer invocations
+with 4.8 based kernels. 4.9 will all the compaction improvements seems
+to be behaving much better but that would be too intrusive to backport
+to 4.8 stable kernels. Instead this patch simply never declares OOM for
+!costly high order requests. We rely on order-0 requests to do that in
+case we are really out of memory. Order-0 requests are much more common
+and so a risk of a livelock without any way forward is highly unlikely.
+
+Reported-by: Marc MERLIN <marc@merlins.org>
+Tested-by: Marc MERLIN <marc@merlins.org>
+Signed-off-by: Michal Hocko <mhocko@suse.com>
+---
+ mm/page_alloc.c |   10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -3161,6 +3161,16 @@ should_compact_retry(struct alloc_contex
+       if (!order || order > PAGE_ALLOC_COSTLY_ORDER)
+               return false;
++#ifdef CONFIG_COMPACTION
++      /*
++       * This is a gross workaround to compensate a lack of reliable compaction
++       * operation. We cannot simply go OOM with the current state of the compaction
++       * code because this can lead to pre mature OOM declaration.
++       */
++      if (order <= PAGE_ALLOC_COSTLY_ORDER)
++              return true;
++#endif
++
+       /*
+        * There are setups with compaction disabled which would prefer to loop
+        * inside the allocator rather than hit the oom killer prematurely.
index 5e0617eb421246e778ea0e9d11c2ceb327435345..2ae243f705c095c96ba8ef84b30ff7caf30d4be8 100644 (file)
@@ -34,3 +34,4 @@ powerpc-set-missing-wakeup-bit-in-lpcr-on-power9.patch
 powerpc-mm-fixup-kernel-read-only-mapping.patch
 powerpc-boot-fix-the-early-opal-console-wrappers.patch
 can-bcm-fix-support-for-can-fd-frames.patch
+mm-oom-stop-pre-mature-high-order-oom-killer-invocations.patch