diff --git a/[refs] b/[refs] index 6a27fc3deac6..621cfd932adc 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a6b91919e0881a0d0a4ae5211d5c879a8c7ca92b +refs/heads/master: 08ca0db8aa2db4ddcf487d46d85dc8ffb22162cc diff --git a/trunk/fs/isofs/compress.c b/trunk/fs/isofs/compress.c index 37dbd6404787..defb932eee9a 100644 --- a/trunk/fs/isofs/compress.c +++ b/trunk/fs/isofs/compress.c @@ -72,6 +72,17 @@ static int zisofs_readpage(struct file *file, struct page *page) offset = index & ~zisofs_block_page_mask; blockindex = offset >> zisofs_block_page_shift; maxpage = (inode->i_size + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT; + + /* + * If this page is wholly outside i_size we just return zero; + * do_generic_file_read() will handle this for us + */ + if (page->index >= maxpage) { + SetPageUptodate(page); + unlock_page(page); + return 0; + } + maxpage = min(zisofs_block_pages, maxpage-offset); for ( i = 0 ; i < maxpage ; i++, offset++ ) {