diff options
Diffstat (limited to 'mm/huge_memory.c')
| -rw-r--r-- | mm/huge_memory.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index e187454d82f..b6c1ce3c53b 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -1162,7 +1162,12 @@ static void __split_huge_page_refcount(struct page *page)  		/* after clearing PageTail the gup refcount can be released */  		smp_mb(); -		page_tail->flags &= ~PAGE_FLAGS_CHECK_AT_PREP; +		/* +		 * retain hwpoison flag of the poisoned tail page: +		 *   fix for the unsuitable process killed on Guest Machine(KVM) +		 *   by the memory-failure. +		 */ +		page_tail->flags &= ~PAGE_FLAGS_CHECK_AT_PREP | __PG_HWPOISON;  		page_tail->flags |= (page->flags &  				     ((1L << PG_referenced) |  				      (1L << PG_swapbacked) |  |