swp_entry_t entry = pte_to_swp_entry(orig_pte); 
swp_entry_t entry; 
static int do_swap_page(struct mm_struct * mm,	struct vm_area_struct * vma, unsigned long address,	pte_t *page_table, pmd_t *pmd, pte_t orig_pte, int write_access){	struct page *page;	swp_entry_t entry = pte_to_swp_entry(orig_pte);	pte_t pte;	int ret = VM_FAULT_MINOR;	pte_unmap(page_table);	spin_unlock(&mm->page_table_lock);	page = lookup_swap_cache(entry);	if (!page) { 		swapin_readahead(entry, address, vma); 		page = read_swap_cache_async(entry, vma, address);		if (!page) {			/*			 * Back out if somebody else faulted in this pte while			 * we released the page table lock.			 */			spin_lock(&mm->page_table_lock);			page_table = pte_offset_map(pmd, address);			if (likely(pte_same(*page_table, orig_pte)))				ret = VM_FAULT_OOM;			else				ret = VM_FAULT_MINOR;			pte_unmap(page_table);			spin_unlock(&mm->page_table_lock);			goto out;		}		/* Had to read the page from swap area: Major fault */		ret = VM_FAULT_MAJOR;		inc_page_state(pgmajfault);		grab_swap_token();	}	mark_page_accessed(page);	lock_page(page);	/*	 * Back out if somebody else faulted in this pte while we	 * released the page table lock.	 */	spin_lock(&mm->page_table_lock);	page_table = pte_offset_map(pmd, address);	if (unlikely(!pte_same(*page_table, orig_pte))) {		ret = VM_FAULT_MINOR;		goto out_nomap;	}	if (unlikely(!PageUptodate(page))) {		ret = VM_FAULT_SIGBUS;		goto out_nomap;	}	/* The page isn't present yet, go ahead with the fault. */	inc_mm_counter(mm, rss);	pte = mk_pte(page, vma->vm_page_prot);	if (write_access && can_share_swap_page(page)) {		pte = maybe_mkwrite(pte_mkdirty(pte), vma);		write_access = 0;	}	flush_icache_page(vma, page);	set_pte_at(mm, address, page_table, pte);	page_add_anon_rmap(page, vma, address);	swap_free(entry);	if (vm_swap_full())		remove_exclusive_swap_page(page);	unlock_page(page);	if (write_access) {		if (do_wp_page(mm, vma, address,				page_table, pmd, pte) == VM_FAULT_OOM)			ret = VM_FAULT_OOM;		goto out;	}	/* No need to invalidate - it was non-present before */	update_mmu_cache(vma, address, pte);	lazy_mmu_prot_update(pte);	pte_unmap(page_table);	spin_unlock(&mm->page_table_lock);out:	return ret;out_nomap:	pte_unmap(page_table);	spin_unlock(&mm->page_table_lock);	unlock_page(page);	page_cache_release(page);	goto out;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/65500d234e74fc4e8f18e1a429bc24e51e75de4a/memory.c/clean/mm/memory.c