- /*- * At lease we found one page. If this is the first time we- * step into the loop, and if the first page index offset is- * greater than the given search offset, a hole was found.- */- if (type == HOLE_OFF && lastoff == startoff &&- lastoff < page_offset(pvec.pages[0])) {- found = true;- break;- }- for (i = 0; i < nr_pages; i++) { struct page *page = pvec.pages[i]; loff_t b_offset;@@ -1101,18 +1090,18 @@ xfs_find_get_desired_pgoff( * file mapping. However, page->index will not change * because we have a reference on the page. *- * Searching done if the page index is out of range.- * If the current offset is not reaches the end of- * the specified search range, there should be a hole- * between them.+ * If current page offset is beyond where we've ended,+ * we've found a hole. */- if (page->index > end) {- if (type == HOLE_OFF && lastoff < endoff) {- *offset = lastoff;- found = true;- }+ if (type == HOLE_OFF && lastoff < endoff &&+ lastoff < page_offset(pvec.pages[i])) {+ found = true;+ *offset = lastoff; goto out; }+ /* Searching done if the page index is out of range. */+ if (page->index > end)+ goto out;