spin_unlock(&init_mm.page_table_lock); 
static int map_page(unsigned long va, unsigned long pa, pgprot_t prot){	pgd_t *pge;	pud_t *pue;	pmd_t *pme;	pte_t *pte;	int err = -ENOMEM;	spin_lock(&init_mm.page_table_lock);	/* Use upper 10 bits of VA to index the first level map */	pge = pgd_offset_k(va);	pue = pud_offset(pge, va);	pme = pmd_offset(pue, va);	/* Use middle 10 bits of VA to index the second-level map */	pte = pte_alloc_kernel(&init_mm, pme, va);	if (pte != 0) {		err = 0;		set_pte(pte, mk_pte_phys(pa & PAGE_MASK, prot));	}	spin_unlock(&init_mm.page_table_lock);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/872fec16d9a0ed3b75b8893aa217e49cca575ee5/dma-alloc.c/buggy/arch/frv/mm/dma-alloc.c