diff --git a/arch/x86/mm/page.c b/arch/x86/mm/page.c index fe056654..99b010e2 100644 --- a/arch/x86/mm/page.c +++ b/arch/x86/mm/page.c @@ -163,8 +163,10 @@ int create_pgd(task_t* task, int copy) continue; phyaddr = copy_page_table(task, i, (page_table_t*) ((KERNEL_SPACE - 1024*PAGE_SIZE + i*PAGE_SIZE) & 0xFFFFF000), &counter); - if (phyaddr) + if (phyaddr) { pgd->entries[i] = (phyaddr & 0xFFFFF000) | (curr_task->pgd->entries[i] & 0xFFF); + pgt->entries[i] = (phyaddr & 0xFFFFF000) | KERN_PAGE; + } } spinlock_unlock(&curr_task->pgd_lock); @@ -607,9 +609,13 @@ int arch_paging_init(void) for(i=0; ipgd->entries[i] = (phyaddr & 0xFFFFF000)|KERN_TABLE; pgt->entries[i] = (phyaddr & 0xFFFFF000)|KERN_PAGE; }