(*mapcount)--; pte_unmap(pte); spin_unlock(&mm->page_table_lock); }
if (mm != current->mm && !ignore_token && has_swap_token(mm) && rwsem_is_locked(&mm->mmap_sem)) referenced++;  (*mapcount)--; pte_unmap_unlock(pte, ptl);
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;	pte_t *pte;	int referenced = 0;	address = vma_address(page, vma);	if (address == -EFAULT)		goto out;	pte = page_check_address(page, mm, address);	if (!IS_ERR(pte)) {		if (ptep_clear_flush_young(vma, address, pte))			referenced++;		/* Pretend the page is referenced if the task has the		   swap token and is in the middle of a page fault. */		if (mm != current->mm && !ignore_token &&				has_swap_token(mm) &&				rwsem_is_locked(&mm->mmap_sem))			referenced++;		(*mapcount)--;		pte_unmap(pte);		spin_unlock(&mm->page_table_lock);	}out:	return referenced;}