change_page_attr(virt_to_page(__va(p->phys_addr)), 
change_page_attr_addr((unsigned long)__va(p->phys_addr), 
void iounmap(volatile void __iomem *addr){	struct vm_struct *p, **pprev;	if (addr <= high_memory) 		return; 	if (addr >= phys_to_virt(ISA_START_ADDRESS) &&		addr < phys_to_virt(ISA_END_ADDRESS))		return;	write_lock(&vmlist_lock);	for (p = vmlist, pprev = &vmlist; p != NULL; pprev = &p->next, p = *pprev)		if (p->addr == (void *)(PAGE_MASK & (unsigned long)addr))			break;	if (!p) { 		printk("__iounmap: bad address %p\n", addr);		goto out_unlock;	}	*pprev = p->next;	unmap_vm_area(p);	if ((p->flags >> 20) &&		p->phys_addr + p->size - 1 < virt_to_phys(high_memory)) {		/* 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();	} out_unlock:	write_unlock(&vmlist_lock);	kfree(p); }
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/93ef70a217637ade3f335303a112b22a134a1ec2/ioremap.c/clean/arch/x86_64/mm/ioremap.c