From: Dave Hansen <haveblue@us.ibm.com>

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 <haveblue@us.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 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))
_