From: Greg Kroah-Hartman Date: Mon, 26 Aug 2019 16:14:19 +0000 (+0200) Subject: 4.9-stable patches X-Git-Tag: v4.14.141~29 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=31bf267b1422b4174d1d0dd08b786056608e3a1c;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: mm-page_owner-handle-thp-splits-correctly.patch --- diff --git a/queue-4.9/mm-page_owner-handle-thp-splits-correctly.patch b/queue-4.9/mm-page_owner-handle-thp-splits-correctly.patch new file mode 100644 index 00000000000..8b7a3a9e936 --- /dev/null +++ b/queue-4.9/mm-page_owner-handle-thp-splits-correctly.patch @@ -0,0 +1,54 @@ +From f7da677bc6e72033f0981b9d58b5c5d409fa641e Mon Sep 17 00:00:00 2001 +From: Vlastimil Babka +Date: Sat, 24 Aug 2019 17:54:59 -0700 +Subject: mm, page_owner: handle THP splits correctly + +From: Vlastimil Babka + +commit f7da677bc6e72033f0981b9d58b5c5d409fa641e upstream. + +THP splitting path is missing the split_page_owner() call that +split_page() has. + +As a result, split THP pages are wrongly reported in the page_owner file +as order-9 pages. Furthermore when the former head page is freed, the +remaining former tail pages are not listed in the page_owner file at +all. This patch fixes that by adding the split_page_owner() call into +__split_huge_page(). + +Link: http://lkml.kernel.org/r/20190820131828.22684-2-vbabka@suse.cz +Fixes: a9627bc5e34e ("mm/page_owner: introduce split_page_owner and replace manual handling") +Reported-by: Kirill A. Shutemov +Signed-off-by: Vlastimil Babka +Cc: Michal Hocko +Cc: Mel Gorman +Cc: Matthew Wilcox +Cc: +Signed-off-by: Andrew Morton +Signed-off-by: Linus Torvalds +Signed-off-by: Greg Kroah-Hartman + +--- + mm/huge_memory.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/mm/huge_memory.c ++++ b/mm/huge_memory.c +@@ -30,6 +30,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -1950,6 +1951,9 @@ static void __split_huge_page(struct pag + } + + ClearPageCompound(head); ++ ++ split_page_owner(head, HPAGE_PMD_ORDER); ++ + /* See comment in __split_huge_page_tail() */ + if (PageAnon(head)) { + page_ref_inc(head); diff --git a/queue-4.9/series b/queue-4.9/series index b03461799ee..b8e7da35714 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -38,3 +38,4 @@ dm-btree-fix-order-of-block-initialization-in-btree_split_beneath.patch dm-space-map-metadata-fix-missing-store-of-apply_bops-return-value.patch dm-table-fix-invalid-memory-accesses-with-too-high-sector-number.patch genirq-properly-pair-kobject_del-with-kobject_add.patch +mm-page_owner-handle-thp-splits-correctly.patch