summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2018-05-08 13:45:55 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2018-05-08 13:45:55 -0700
commit60fd11477701b7cd1126605fdfcaa63b0014edc2 (patch)
treeb1c611942ae68b08dbcc3c39a1504901d45ee01a
parentd822f25d6dd3f06b2568245150b8d300ae7881aa (diff)
parentd97c09c1531f4a6c427a33f6d6bf83d1cc1f8098 (diff)
Merge "mm: treat indirectly reclaimable memory as free in overcommit logic"
-rw-r--r--mm/mmap.c7
-rw-r--r--mm/nommu.c7
2 files changed, 14 insertions, 0 deletions
diff --git a/mm/mmap.c b/mm/mmap.c
index 2339b533f4b2..5457c5f4935b 100644
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -206,6 +206,13 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
free += global_page_state(NR_SLAB_RECLAIMABLE);
/*
+ * Part of the kernel memory, which can be released
+ * under memory pressure.
+ */
+ free += global_page_state(
+ NR_INDIRECTLY_RECLAIMABLE_BYTES) >> PAGE_SHIFT;
+
+ /*
* Leave reserved pages. The pages are not for anonymous pages.
*/
if (free <= totalreserve_pages)
diff --git a/mm/nommu.c b/mm/nommu.c
index 92be862c859b..8d75e425c21c 100644
--- a/mm/nommu.c
+++ b/mm/nommu.c
@@ -1880,6 +1880,13 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
free += global_page_state(NR_SLAB_RECLAIMABLE);
/*
+ * Part of the kernel memory, which can be released
+ * under memory pressure.
+ */
+ free += global_page_state(
+ NR_INDIRECTLY_RECLAIMABLE_BYTES) >> PAGE_SHIFT;
+
+ /*
* Leave reserved pages. The pages are not for anonymous pages.
*/
if (free <= totalreserve_pages)