diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2019-07-30 12:46:53 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2019-08-09 16:41:08 -0400 |
commit | 8e7f0f7423e9c6bacb6f6944719d484fd92cc3ee (patch) | |
tree | 1c4daec135a846dc039cda110c24e65ca46cdf76 | |
parent | cdedd956f40fff2121705f91966a4f74a013a691 (diff) |
bcachefs: Fix bch2_seek_data()
-rw-r--r-- | fs/bcachefs/fs-io.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/bcachefs/fs-io.c b/fs/bcachefs/fs-io.c index 7f11e8869a5a..a55436f0dcaa 100644 --- a/fs/bcachefs/fs-io.c +++ b/fs/bcachefs/fs-io.c @@ -2805,16 +2805,15 @@ static loff_t bch2_next_pagecache_data(struct inode *vinode, pgoff_t index; for (index = start_offset >> PAGE_SHIFT; - index < end_offset >> PAGE_SHIFT; - index++) { + index < end_offset >> PAGE_SHIFT;) { if (find_get_pages(mapping, &index, 1, &page)) { lock_page(page); if (page_is_data(page)) end_offset = min(end_offset, - max(start_offset, - ((loff_t) index) << PAGE_SHIFT)); + max(start_offset, + ((loff_t) page->index) << PAGE_SHIFT)); unlock_page(page); put_page(page); } else { @@ -2860,7 +2859,7 @@ static loff_t bch2_seek_data(struct file *file, u64 offset) next_data = bch2_next_pagecache_data(&inode->v, offset, next_data); - if (next_data > isize) + if (next_data >= isize) return -ENXIO; return vfs_setpos(file, next_data, MAX_LFS_FILESIZE); |