Skip to content

Commit

Permalink
HWPOISON: Add poison check to page fault handling
Browse files Browse the repository at this point in the history
Bail out early when hardware poisoned pages are found in page fault handling.
Since they are poisoned they should not be mapped freshly into processes,
because that would cause another (potentially deadly) machine check

This is generally handled in the same way as OOM, just a different
error code is returned to the architecture code.

v2: Do a page unlock if needed (Fengguang Wu)

Signed-off-by: Andi Kleen <ak@linux.intel.com>
  • Loading branch information
Andi Kleen authored and Andi Kleen committed Sep 16, 2009
1 parent d1737fd commit a3b947e
Showing 1 changed file with 6 additions and 0 deletions.
6 changes: 6 additions & 0 deletions mm/memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -2711,6 +2711,12 @@ static int __do_fault(struct mm_struct *mm, struct vm_area_struct *vma,
if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE)))
return ret;

if (unlikely(PageHWPoison(vmf.page))) {
if (ret & VM_FAULT_LOCKED)
unlock_page(vmf.page);
return VM_FAULT_HWPOISON;
}

/*
* For consistency in subsequent calls, make the faulted page always
* locked.
Expand Down

0 comments on commit a3b947e

Please sign in to comment.