diff options
| -rw-r--r-- | fs/ext4/file.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/ext4/file.c b/fs/ext4/file.c index 58294c9a7e1d..0d7cf0cc9b87 100644 --- a/fs/ext4/file.c +++ b/fs/ext4/file.c | |||
| @@ -537,6 +537,8 @@ static int ext4_find_unwritten_pgoff(struct inode *inode, | |||
| 537 | lastoff = page_offset(page); | 537 | lastoff = page_offset(page); |
| 538 | bh = head = page_buffers(page); | 538 | bh = head = page_buffers(page); |
| 539 | do { | 539 | do { |
| 540 | if (lastoff + bh->b_size <= startoff) | ||
| 541 | goto next; | ||
| 540 | if (buffer_uptodate(bh) || | 542 | if (buffer_uptodate(bh) || |
| 541 | buffer_unwritten(bh)) { | 543 | buffer_unwritten(bh)) { |
| 542 | if (whence == SEEK_DATA) | 544 | if (whence == SEEK_DATA) |
| @@ -551,6 +553,7 @@ static int ext4_find_unwritten_pgoff(struct inode *inode, | |||
| 551 | unlock_page(page); | 553 | unlock_page(page); |
| 552 | goto out; | 554 | goto out; |
| 553 | } | 555 | } |
| 556 | next: | ||
| 554 | lastoff += bh->b_size; | 557 | lastoff += bh->b_size; |
| 555 | bh = bh->b_this_page; | 558 | bh = bh->b_this_page; |
| 556 | } while (bh != head); | 559 | } while (bh != head); |
