Jan Beulich <jbeul...@novell.com> wrote: > - ASSERTCMP(page_index, >=, next); > - next = page_index + 1; > + ASSERTCMP(page_index, >, next); > + next = page_index;
The assertion should now trip every time. Consider what happens on an inode with page 0. Looking at the code: next = 0; do { if (!pagevec_lookup(&pvec, mapping, next, PAGEVEC_SIZE)) break; We start off looking for pages from 0 and up, which we then loop through: for (i = 0; i < pagevec_count(&pvec); i++) { struct page *page = pvec.pages[i]; pgoff_t page_index = page->index; 'next' hasn't been modified to this point, so that it's still 0. The first page attached to the inode will have an index of 0. Thus the following assertion will fail: ASSERTCMP(page_index, >, next); You really do need the >= here. Or, better still, I think, just get rid of the assertion - if pagevec_lookup() returns pages in an unordered list, I suspect we have problems elsewhere too. David _______________________________________________ stable mailing list stable@linux.kernel.org http://linux.kernel.org/mailman/listinfo/stable