out_unlock: write_unlock(&vmlist_lock); 
void iounmap(volatile void __iomem *addr){	struct vm_struct *p;	if ((void __force *) addr <= high_memory) 		return;	/*	 * __ioremap special-cases the PCI/ISA range by not instantiating a	 * vm_area and by simply returning an address into the kernel mapping	 * of ISA space.   So handle that here.	 */	if (addr >= phys_to_virt(ISA_START_ADDRESS) &&			addr < phys_to_virt(ISA_END_ADDRESS))		return;	p = remove_vm_area((void *) (PAGE_MASK & (unsigned long __force) addr));	if (!p) { 		printk("__iounmap: bad address %p\n", addr);		return;	}	if ((p->flags >> 20) && p->phys_addr < virt_to_phys(high_memory) - 1) {		/* p->size includes the guard page, but cpa doesn't like that */		change_page_attr(virt_to_page(__va(p->phys_addr)),				 p->size >> PAGE_SHIFT,				 PAGE_KERNEL);		global_flush_tlb();	} 	kfree(p); }
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/4057923614e2868a865aa6c6e3bc53542c818d4d/ioremap.c/clean/arch/i386/mm/ioremap.c