err = -ENOMEM; if (page_mapcount(page) > INT_MAX/2) goto err_unlock; 
int install_page(struct mm_struct *mm, struct vm_area_struct *vma,		unsigned long addr, struct page *page, pgprot_t prot){	struct inode *inode;	pgoff_t size;	int err = -ENOMEM;	pte_t *pte;	pmd_t *pmd;	pud_t *pud;	pgd_t *pgd;	pte_t pte_val;	pgd = pgd_offset(mm, addr);	spin_lock(&mm->page_table_lock);		pud = pud_alloc(mm, pgd, addr);	if (!pud)		goto err_unlock;	pmd = pmd_alloc(mm, pud, addr);	if (!pmd)		goto err_unlock;	pte = pte_alloc_map(mm, pmd, addr);	if (!pte)		goto err_unlock;	/*	 * This page may have been truncated. Tell the	 * caller about it.	 */	err = -EINVAL;	inode = vma->vm_file->f_mapping->host;	size = (i_size_read(inode) + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;	if (!page->mapping || page->index >= size)		goto err_unlock;	zap_pte(mm, vma, addr, pte);	inc_mm_counter(mm,rss);	flush_icache_page(vma, page);	set_pte_at(mm, addr, pte, mk_pte(page, prot));	page_add_file_rmap(page);	pte_val = *pte;	pte_unmap(pte);	update_mmu_cache(vma, addr, pte_val);	err = 0;err_unlock:	spin_unlock(&mm->page_table_lock);	return err;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/f5154a98a1931641f0448f6512294a15279110d7/fremap.c/clean/mm/fremap.c