pgd_t *pgd; pud_t *pud; pmd_t *pmd; 
static int page_referenced_one(struct page *page,	struct vm_area_struct *vma, unsigned int *mapcount, int ignore_token){	struct mm_struct *mm = vma->vm_mm;	unsigned long address;	pgd_t *pgd;	pud_t *pud;	pmd_t *pmd;	pte_t *pte;	int referenced = 0;	if (!get_mm_counter(mm, rss))		goto out;	address = vma_address(page, vma);	if (address == -EFAULT)		goto out;	spin_lock(&mm->page_table_lock);	pgd = pgd_offset(mm, address);	if (!pgd_present(*pgd))		goto out_unlock;	pud = pud_offset(pgd, address);	if (!pud_present(*pud))		goto out_unlock;	pmd = pmd_offset(pud, address);	if (!pmd_present(*pmd))		goto out_unlock;	pte = pte_offset_map(pmd, address);	if (!pte_present(*pte))		goto out_unmap;	if (page_to_pfn(page) != pte_pfn(*pte))		goto out_unmap;	if (ptep_clear_flush_young(vma, address, pte))		referenced++;	if (mm != current->mm && !ignore_token && has_swap_token(mm))		referenced++;	(*mapcount)--;out_unmap:	pte_unmap(pte);out_unlock:	spin_unlock(&mm->page_table_lock);out:	return referenced;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/81b4082dc7666e2bc5ec229d8e837f3bafb96883/rmap.c/clean/mm/rmap.c