if (PTR_ERR(page) == -ENODATA) { 
if (PTR_ERR(page) == -ENODATA) 
xip_truncate_page(struct address_space *mapping, loff_t from){	pgoff_t index = from >> PAGE_CACHE_SHIFT;	unsigned offset = from & (PAGE_CACHE_SIZE-1);	unsigned blocksize;	unsigned length;	struct page *page;	void *kaddr;	int err;	BUG_ON(!mapping->a_ops->get_xip_page);	blocksize = 1 << mapping->host->i_blkbits;	length = offset & (blocksize - 1);	/* Block boundary? Nothing to do */	if (!length)		return 0;	length = blocksize - length;	page = mapping->a_ops->get_xip_page(mapping,					    index*(PAGE_SIZE/512), 0);	err = -ENOMEM;	if (!page)		goto out;	if (unlikely(IS_ERR(page))) {		if (PTR_ERR(page) == -ENODATA) {			/* Hole? No need to truncate */			return 0;		} else {			err = PTR_ERR(page);			goto out;		}	} else		BUG_ON(!PageUptodate(page));	kaddr = kmap_atomic(page, KM_USER0);	memset(kaddr + offset, 0, length);	kunmap_atomic(kaddr, KM_USER0);	flush_dcache_page(page);	err = 0;out:	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/eb6fe0c388e43b02e261f0fdee60e42f6298d7f7/filemap_xip.c/clean/mm/filemap_xip.c