pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { pte_t *pte; extern int mem_init_done; extern void *early_get_page(void); if (mem_init_done) pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); else pte = (pte_t *)early_get_page(); if (pte) clear_page(pte); return pte; }
pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { pte_t *pte; extern int mem_init_done; extern void *early_get_page(void); if (mem_init_done) { pte = (pte_t *)__get_free_page(GFP_KERNEL|__GFP_REPEAT); if (pte) { struct page *ptepage = virt_to_page(pte); ptepage->mapping = (void *) mm; ptepage->index = address & PMD_MASK; } } else pte = (pte_t *)early_get_page(); if (pte) clear_page(pte); return pte; }