diff --git a/[refs] b/[refs] index 8b7208bb8526..f85470a582e5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d1737fdbec7f90edc52dd0c5c3767457f28e78d8 +refs/heads/master: a3b947eacfe783df4ca0fe53ef8a764eebc2d0d6 diff --git a/trunk/mm/memory.c b/trunk/mm/memory.c index 02bae2d540d4..44ea41196c13 100644 --- a/trunk/mm/memory.c +++ b/trunk/mm/memory.c @@ -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.