From: Dave Hansen Store the physical pgd address in a different variable than the virtual address. There's no real reason to only use 1 variable here, other than saving a line of code. But, the types really are different and we might as well just spell that out explicitly. Signed-off-by: Dave Hansen Signed-off-by: Andrew Morton --- 25-akpm/arch/i386/mm/fault.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff -puN arch/i386/mm/fault.c~vmalloc_fault-cleanup arch/i386/mm/fault.c --- 25/arch/i386/mm/fault.c~vmalloc_fault-cleanup 2004-08-24 22:10:42.169757904 -0700 +++ 25-akpm/arch/i386/mm/fault.c 2004-08-24 22:10:42.174757144 -0700 @@ -512,12 +512,13 @@ vmalloc_fault: * an interrupt in the middle of a task switch.. */ int index = pgd_index(address); + unsigned long pgd_paddr; pgd_t *pgd, *pgd_k; pmd_t *pmd, *pmd_k; pte_t *pte_k; - asm("movl %%cr3,%0":"=r" (pgd)); - pgd = index + (pgd_t *)__va(pgd); + asm("movl %%cr3,%0":"=r" (pgd_paddr)); + pgd = index + (pgd_t *)__va(pgd_paddr); pgd_k = init_mm.pgd + index; if (!pgd_present(*pgd_k)) _