|
@@ -2553,6 +2553,10 @@ static int do_swap_page(struct mm_struct *mm, struct vm_area_struct *vma,
|
|
ret = VM_FAULT_MAJOR;
|
|
ret = VM_FAULT_MAJOR;
|
|
count_vm_event(PGMAJFAULT);
|
|
count_vm_event(PGMAJFAULT);
|
|
} else if (PageHWPoison(page)) {
|
|
} else if (PageHWPoison(page)) {
|
|
|
|
+ /*
|
|
|
|
+ * hwpoisoned dirty swapcache pages are kept for killing
|
|
|
|
+ * owner processes (which may be unknown at hwpoison time)
|
|
|
|
+ */
|
|
ret = VM_FAULT_HWPOISON;
|
|
ret = VM_FAULT_HWPOISON;
|
|
delayacct_clear_flag(DELAYACCT_PF_SWAPIN);
|
|
delayacct_clear_flag(DELAYACCT_PF_SWAPIN);
|
|
goto out_release;
|
|
goto out_release;
|