mm/hugetlb: add migration entry check in __unmap_hugepage_range
commit9fbc1f635f
upstream. If __unmap_hugepage_range() tries to unmap the address range over which hugepage migration is on the way, we get the wrong page because pte_page() doesn't work for migration entries. This patch simply clears the pte for migration entries as we do for hwpoison entries. Fixes:290408d4a2
("hugetlb: hugepage migration core") Signed-off-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Hugh Dickins <hughd@google.com> Cc: James Hogan <james.hogan@imgtec.com> Cc: David Rientjes <rientjes@google.com> Cc: Mel Gorman <mel@csn.ul.ie> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Cc: Rik van Riel <riel@redhat.com> Cc: Andrea Arcangeli <aarcange@redhat.com> Cc: Luiz Capitulino <lcapitulino@redhat.com> Cc: Nishanth Aravamudan <nacc@linux.vnet.ibm.com> Cc: Lee Schermerhorn <lee.schermerhorn@hp.com> Cc: Steve Capper <steve.capper@linaro.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d0fc2ca5a3
commit
99537c232b
|
@ -2488,9 +2488,10 @@ again:
|
||||||
goto unlock;
|
goto unlock;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* HWPoisoned hugepage is already unmapped and dropped reference
|
* Migrating hugepage or HWPoisoned hugepage is already
|
||||||
|
* unmapped and its refcount is dropped, so just clear pte here.
|
||||||
*/
|
*/
|
||||||
if (unlikely(is_hugetlb_entry_hwpoisoned(pte))) {
|
if (unlikely(!pte_present(pte))) {
|
||||||
huge_pte_clear(mm, address, ptep);
|
huge_pte_clear(mm, address, ptep);
|
||||||
goto unlock;
|
goto unlock;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue