|
@@ -542,13 +542,14 @@ out_unlock:
|
|
|
return do_split;
|
|
|
}
|
|
|
|
|
|
-int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase)
|
|
|
+static int
|
|
|
+__split_large_page(pte_t *kpte, unsigned long address, struct page *base)
|
|
|
{
|
|
|
+ pte_t *pbase = (pte_t *)page_address(base);
|
|
|
unsigned long pfn, pfninc = 1;
|
|
|
unsigned int i, level;
|
|
|
pte_t *tmp;
|
|
|
pgprot_t ref_prot;
|
|
|
- struct page *base = virt_to_page(pbase);
|
|
|
|
|
|
spin_lock(&pgd_lock);
|
|
|
/*
|
|
@@ -633,7 +634,6 @@ int __split_large_page(pte_t *kpte, unsigned long address, pte_t *pbase)
|
|
|
|
|
|
static int split_large_page(pte_t *kpte, unsigned long address)
|
|
|
{
|
|
|
- pte_t *pbase;
|
|
|
struct page *base;
|
|
|
|
|
|
if (!debug_pagealloc)
|
|
@@ -644,8 +644,7 @@ static int split_large_page(pte_t *kpte, unsigned long address)
|
|
|
if (!base)
|
|
|
return -ENOMEM;
|
|
|
|
|
|
- pbase = (pte_t *)page_address(base);
|
|
|
- if (__split_large_page(kpte, address, pbase))
|
|
|
+ if (__split_large_page(kpte, address, base))
|
|
|
__free_page(base);
|
|
|
|
|
|
return 0;
|