pte_unmap(new_pte); 
pgd_t *get_pgd_slow(struct mm_struct *mm){	pgd_t *new_pgd, *init_pgd;	pmd_t *new_pmd, *init_pmd;	pte_t *new_pte, *init_pte;	new_pgd = alloc_pgd_table();	if (!new_pgd)		goto no_pgd;	/*	 * This lock is here just to satisfy pmd_alloc and pte_lock         * FIXME: I bet we could avoid taking it pretty much altogether	 */	spin_lock(&mm->page_table_lock);	/*	 * On ARM, first page must always be allocated since it contains	 * the machine vectors.	 */	new_pmd = pmd_alloc(mm, new_pgd, 0);	if (!new_pmd)		goto no_pmd;	new_pte = pte_alloc_kernel(mm, new_pmd, 0);	if (!new_pte)		goto no_pte;	init_pgd = pgd_offset(&init_mm, 0);	init_pmd = pmd_offset(init_pgd, 0);	init_pte = pte_offset(init_pmd, 0);	set_pte(new_pte, *init_pte);	/*	 * the page table entries are zeroed	 * when the table is created. (see the cache_ctor functions below)	 * Now we need to plonk the kernel (vmalloc) area at the end of	 * the address space. We copy this from the init thread, just like	 * the init_pte we copied above...	 */	memcpy(new_pgd + FIRST_KERNEL_PGD_NR, init_pgd + FIRST_KERNEL_PGD_NR,		(PTRS_PER_PGD - FIRST_KERNEL_PGD_NR) * sizeof(pgd_t));	spin_unlock(&mm->page_table_lock);	/* update MEMC tables */	cpu_memc_update_all(new_pgd);	return new_pgd;no_pte:	spin_unlock(&mm->page_table_lock);	pmd_free(new_pmd);	free_pgd_slow(new_pgd);	return NULL;no_pmd:	spin_unlock(&mm->page_table_lock);	free_pgd_slow(new_pgd);	return NULL;no_pgd:	return NULL;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/872fec16d9a0ed3b75b8893aa217e49cca575ee5/memc.c/buggy/arch/arm26/mm/memc.c