• Jeff Moyer's avatar
    [PATCH] filemap_getpage can block when MAP_NONBLOCK specified · d3457342
    Jeff Moyer authored
    We will return NULL from filemap_getpage when a page does not exist in the
    page cache and MAP_NONBLOCK is specified, here:
    
    	page = find_get_page(mapping, pgoff);
    	if (!page) {
    		if (nonblock)
    			return NULL;
    		goto no_cached_page;
    	}
    
    But we forget to do so when the page in the cache is not uptodate.  The
    following could result in a blocking call:
    
    	/*
    	 * Ok, found a page in the page cache, now we need to check
    	 * that it's up-to-date.
    	 */
    	if (!PageUptodate(page))
    		goto page_not_uptodate;
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    d3457342
filemap.c 56.9 KB