diff options
Diffstat (limited to 'mm/filemap.c')
| -rw-r--r-- | mm/filemap.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/mm/filemap.c b/mm/filemap.c index c6ebd9f912ab..100b99c2d504 100644 --- a/mm/filemap.c +++ b/mm/filemap.c | |||
| @@ -120,6 +120,7 @@ void __remove_from_page_cache(struct page *page) | |||
| 120 | page->mapping = NULL; | 120 | page->mapping = NULL; |
| 121 | mapping->nrpages--; | 121 | mapping->nrpages--; |
| 122 | __dec_zone_page_state(page, NR_FILE_PAGES); | 122 | __dec_zone_page_state(page, NR_FILE_PAGES); |
| 123 | BUG_ON(page_mapped(page)); | ||
| 123 | } | 124 | } |
| 124 | 125 | ||
| 125 | void remove_from_page_cache(struct page *page) | 126 | void remove_from_page_cache(struct page *page) |
| @@ -1218,6 +1219,8 @@ generic_file_aio_read(struct kiocb *iocb, const struct iovec *iov, | |||
| 1218 | retval = retval ?: desc.error; | 1219 | retval = retval ?: desc.error; |
| 1219 | break; | 1220 | break; |
| 1220 | } | 1221 | } |
| 1222 | if (desc.count > 0) | ||
| 1223 | break; | ||
| 1221 | } | 1224 | } |
| 1222 | } | 1225 | } |
| 1223 | out: | 1226 | out: |
| @@ -1964,7 +1967,6 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i | |||
| 1964 | if (unlikely(*pos + *count > MAX_NON_LFS && | 1967 | if (unlikely(*pos + *count > MAX_NON_LFS && |
| 1965 | !(file->f_flags & O_LARGEFILE))) { | 1968 | !(file->f_flags & O_LARGEFILE))) { |
| 1966 | if (*pos >= MAX_NON_LFS) { | 1969 | if (*pos >= MAX_NON_LFS) { |
| 1967 | send_sig(SIGXFSZ, current, 0); | ||
| 1968 | return -EFBIG; | 1970 | return -EFBIG; |
| 1969 | } | 1971 | } |
| 1970 | if (*count > MAX_NON_LFS - (unsigned long)*pos) { | 1972 | if (*count > MAX_NON_LFS - (unsigned long)*pos) { |
| @@ -1982,7 +1984,6 @@ inline int generic_write_checks(struct file *file, loff_t *pos, size_t *count, i | |||
| 1982 | if (likely(!isblk)) { | 1984 | if (likely(!isblk)) { |
| 1983 | if (unlikely(*pos >= inode->i_sb->s_maxbytes)) { | 1985 | if (unlikely(*pos >= inode->i_sb->s_maxbytes)) { |
| 1984 | if (*count || *pos > inode->i_sb->s_maxbytes) { | 1986 | if (*count || *pos > inode->i_sb->s_maxbytes) { |
| 1985 | send_sig(SIGXFSZ, current, 0); | ||
| 1986 | return -EFBIG; | 1987 | return -EFBIG; |
| 1987 | } | 1988 | } |
| 1988 | /* zero-length writes at ->s_maxbytes are OK */ | 1989 | /* zero-length writes at ->s_maxbytes are OK */ |
