|
@@ -647,9 +647,12 @@ __split_large_page(struct cpa_data *cpa, pte_t *kpte, unsigned long address,
|
|
for (i = 0; i < PTRS_PER_PTE; i++, pfn += pfninc)
|
|
for (i = 0; i < PTRS_PER_PTE; i++, pfn += pfninc)
|
|
set_pte(&pbase[i], pfn_pte(pfn, canon_pgprot(ref_prot)));
|
|
set_pte(&pbase[i], pfn_pte(pfn, canon_pgprot(ref_prot)));
|
|
|
|
|
|
- if (pfn_range_is_mapped(PFN_DOWN(__pa(address)),
|
|
|
|
- PFN_DOWN(__pa(address)) + 1))
|
|
|
|
- split_page_count(level);
|
|
|
|
|
|
+ if (virt_addr_valid(address)) {
|
|
|
|
+ unsigned long pfn = PFN_DOWN(__pa(address));
|
|
|
|
+
|
|
|
|
+ if (pfn_range_is_mapped(pfn, pfn + 1))
|
|
|
|
+ split_page_count(level);
|
|
|
|
+ }
|
|
|
|
|
|
/*
|
|
/*
|
|
* Install the new, split up pagetable.
|
|
* Install the new, split up pagetable.
|