 spin_lock(&mm->page_table_lock);  
void exit_mmap(struct mm_struct *mm){	struct mmu_gather *tlb;	struct vm_area_struct *vma = mm->mmap;	unsigned long nr_accounted = 0;	unsigned long end;	lru_add_drain();	spin_lock(&mm->page_table_lock);	flush_cache_mm(mm);	tlb = tlb_gather_mmu(mm, 1);	/* Don't update_hiwater_rss(mm) here, do_exit already did */	/* Use -1 here to ensure all VMAs in the mm are unmapped */	end = unmap_vmas(&tlb, mm, vma, 0, -1, &nr_accounted, NULL);	vm_unacct_memory(nr_accounted);	free_pgtables(&tlb, vma, FIRST_USER_ADDRESS, 0);	tlb_finish_mmu(tlb, 0, end);	spin_unlock(&mm->page_table_lock);	/*	 * Walk the list again, actually closing and freeing it	 * without holding any MM locks.	 */	while (vma)		vma = remove_vma(vma);	BUG_ON(mm->nr_ptes > (FIRST_USER_ADDRESS+PMD_SIZE-1)>>PMD_SHIFT);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/8f4f8c164cb4af1432cc25eda82928ea4519ba72/mmap.c/clean/mm/mmap.c