diff options
-rw-r--r-- | mm/filemap.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index 1b05f75aea0f..2f7b7783bd6b 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
@@ -1687,6 +1687,10 @@ static ssize_t do_generic_file_read(struct file *filp, loff_t *ppos, | |||
1687 | unsigned int prev_offset; | 1687 | unsigned int prev_offset; |
1688 | int error = 0; | 1688 | int error = 0; |
1689 | 1689 | ||
1690 | if (unlikely(*ppos >= inode->i_sb->s_maxbytes)) | ||
1691 | return -EINVAL; | ||
1692 | iov_iter_truncate(iter, inode->i_sb->s_maxbytes); | ||
1693 | |||
1690 | index = *ppos >> PAGE_SHIFT; | 1694 | index = *ppos >> PAGE_SHIFT; |
1691 | prev_index = ra->prev_pos >> PAGE_SHIFT; | 1695 | prev_index = ra->prev_pos >> PAGE_SHIFT; |
1692 | prev_offset = ra->prev_pos & (PAGE_SIZE-1); | 1696 | prev_offset = ra->prev_pos & (PAGE_SIZE-1); |