From: Greg Kroah-Hartman Date: Fri, 1 Apr 2022 13:34:02 +0000 (+0200) Subject: drop queue-4.14/mm-invalidate-hwpoison-page-cache-page-in-fault-path.patch X-Git-Tag: v4.14.275~21 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1d9a857927d6e5175e04abb96b61ec8208fc4ec9;p=thirdparty%2Fkernel%2Fstable-queue.git drop queue-4.14/mm-invalidate-hwpoison-page-cache-page-in-fault-path.patch --- diff --git a/queue-4.14/mm-invalidate-hwpoison-page-cache-page-in-fault-path.patch b/queue-4.14/mm-invalidate-hwpoison-page-cache-page-in-fault-path.patch deleted file mode 100644 index e976bffc06d..00000000000 --- a/queue-4.14/mm-invalidate-hwpoison-page-cache-page-in-fault-path.patch +++ /dev/null @@ -1,63 +0,0 @@ -From e53ac7374e64dede04d745ff0e70ff5048378d1f Mon Sep 17 00:00:00 2001 -From: Rik van Riel -Date: Tue, 22 Mar 2022 14:44:09 -0700 -Subject: mm: invalidate hwpoison page cache page in fault path - -From: Rik van Riel - -commit e53ac7374e64dede04d745ff0e70ff5048378d1f upstream. - -Sometimes the page offlining code can leave behind a hwpoisoned clean -page cache page. This can lead to programs being killed over and over -and over again as they fault in the hwpoisoned page, get killed, and -then get re-spawned by whatever wanted to run them. - -This is particularly embarrassing when the page was offlined due to -having too many corrected memory errors. Now we are killing tasks due -to them trying to access memory that probably isn't even corrupted. - -This problem can be avoided by invalidating the page from the page fault -handler, which already has a branch for dealing with these kinds of -pages. With this patch we simply pretend the page fault was successful -if the page was invalidated, return to userspace, incur another page -fault, read in the file from disk (to a new memory page), and then -everything works again. - -Link: https://lkml.kernel.org/r/20220212213740.423efcea@imladris.surriel.com -Signed-off-by: Rik van Riel -Reviewed-by: Miaohe Lin -Acked-by: Naoya Horiguchi -Reviewed-by: Oscar Salvador -Cc: John Hubbard -Cc: Mel Gorman -Cc: Johannes Weiner -Cc: Matthew Wilcox -Cc: -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Greg Kroah-Hartman ---- - mm/memory.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -3329,11 +3329,16 @@ static int __do_fault(struct vm_fault *v - return ret; - - if (unlikely(PageHWPoison(vmf->page))) { -- if (ret & VM_FAULT_LOCKED) -+ vm_fault_t poisonret = VM_FAULT_HWPOISON; -+ if (ret & VM_FAULT_LOCKED) { -+ /* Retry if a clean page was removed from the cache. */ -+ if (invalidate_inode_page(vmf->page)) -+ poisonret = 0; - unlock_page(vmf->page); -+ } - put_page(vmf->page); - vmf->page = NULL; -- return VM_FAULT_HWPOISON; -+ return poisonret; - } - - if (unlikely(!(ret & VM_FAULT_LOCKED))) diff --git a/queue-4.14/series b/queue-4.14/series index 9e053612954..7bf4a8eb01e 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -28,5 +28,4 @@ jffs2-fix-use-after-free-in-jffs2_clear_xattr_subsystem.patch jffs2-fix-memory-leak-in-jffs2_do_mount_fs.patch jffs2-fix-memory-leak-in-jffs2_scan_medium.patch mm-pages_alloc.c-don-t-create-zone_movable-beyond-the-end-of-a-node.patch -mm-invalidate-hwpoison-page-cache-page-in-fault-path.patch mempolicy-mbind_range-set_policy-after-vma_merge.patch