spin_unlock(&init_mm.page_table_lock); 
static int ioremap_page_range(unsigned long addr,		unsigned long end, unsigned long phys_addr, unsigned long flags){	pgd_t *pgd;	unsigned long next;	int err;	BUG_ON(addr >= end);	flush_cache_all();	phys_addr -= addr;	pgd = pgd_offset_k(addr);	spin_lock(&init_mm.page_table_lock);	do {		next = pgd_addr_end(addr, end);		err = ioremap_pud_range(pgd, addr, next, phys_addr+addr, flags);		if (err)			break;	} while (pgd++, addr = next, addr != end);	spin_unlock(&init_mm.page_table_lock);	flush_tlb_all();	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/872fec16d9a0ed3b75b8893aa217e49cca575ee5/ioremap.c/clean/arch/i386/mm/ioremap.c