/* Clean up any leftover PTE pages in the region */ spin_lock(&mm->page_table_lock); tlb = tlb_gather_mmu(mm, 0); for (addr = start; addr < end; addr += PMD_SIZE) { pgd_t *pgd = pgd_offset(mm, addr); pmd_t *pmd; struct page *page; pte_t *pte; int i;  if (pgd_none(*pgd)) continue; pmd = pmd_offset(pgd, addr); if (!pmd || pmd_none(*pmd)) continue; if (pmd_bad(*pmd)) { pmd_ERROR(*pmd); pmd_clear(pmd); continue; } pte = (pte_t *)pmd_page_kernel(*pmd); /* No VMAs, so there should be no PTEs, check just in case. */ for (i = 0; i < PTRS_PER_PTE; i++) { BUG_ON(!pte_none(*pte)); pte++; } page = pmd_page(*pmd); pmd_clear(pmd); mm->nr_ptes--; dec_page_state(nr_page_table_pages); pte_free_tlb(tlb, page); } tlb_finish_mmu(tlb, start, end); spin_unlock(&mm->page_table_lock);  
static int prepare_low_seg_for_htlb(struct mm_struct *mm, unsigned long seg){	unsigned long start = seg << SID_SHIFT;	unsigned long end = (seg+1) << SID_SHIFT;	struct vm_area_struct *vma;	unsigned long addr;	struct mmu_gather *tlb;	BUG_ON(seg >= 16);	/* Check no VMAs are in the region */	vma = find_vma(mm, start);	if (vma && (vma->vm_start < end))		return -EBUSY;	/* Clean up any leftover PTE pages in the region */	spin_lock(&mm->page_table_lock);	tlb = tlb_gather_mmu(mm, 0);	for (addr = start; addr < end; addr += PMD_SIZE) {		pgd_t *pgd = pgd_offset(mm, addr);		pmd_t *pmd;		struct page *page;		pte_t *pte;		int i;		if (pgd_none(*pgd))			continue;		pmd = pmd_offset(pgd, addr);		if (!pmd || pmd_none(*pmd))			continue;		if (pmd_bad(*pmd)) {			pmd_ERROR(*pmd);			pmd_clear(pmd);			continue;		}		pte = (pte_t *)pmd_page_kernel(*pmd);		/* No VMAs, so there should be no PTEs, check just in case. */		for (i = 0; i < PTRS_PER_PTE; i++) {			BUG_ON(!pte_none(*pte));			pte++;		}		page = pmd_page(*pmd);		pmd_clear(pmd);		mm->nr_ptes--;		dec_page_state(nr_page_table_pages);		pte_free_tlb(tlb, page);	}	tlb_finish_mmu(tlb, start, end);	spin_unlock(&mm->page_table_lock);	return 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/021740dc30d184e3b0fa7679936e65a56090c425/hugetlbpage.c/buggy/arch/ppc64/mm/hugetlbpage.c