|
@@ -1231,8 +1231,14 @@ static bool transparent_hugepage_adjust(kvm_pfn_t *pfnp, phys_addr_t *ipap)
|
|
|
{
|
|
|
kvm_pfn_t pfn = *pfnp;
|
|
|
gfn_t gfn = *ipap >> PAGE_SHIFT;
|
|
|
+ struct page *page = pfn_to_page(pfn);
|
|
|
|
|
|
- if (PageTransCompoundMap(pfn_to_page(pfn))) {
|
|
|
+ /*
|
|
|
+ * PageTransCompoungMap() returns true for THP and
|
|
|
+ * hugetlbfs. Make sure the adjustment is done only for THP
|
|
|
+ * pages.
|
|
|
+ */
|
|
|
+ if (!PageHuge(page) && PageTransCompoundMap(page)) {
|
|
|
unsigned long mask;
|
|
|
/*
|
|
|
* The address we faulted on is backed by a transparent huge
|