On Sat, Feb 10, 2018 at 10:04:23AM -0800, Joe Perches wrote: > > @@ -120,14 +120,12 @@ static int traverse(struct seq_file *m, loff_t offset) > > if (pos + m->count > offset) { > > m->from = offset - pos; > > m->count -= m->from; > > - m->index = index; > > break; > > } > > pos += m->count; > > m->count = 0; > > if (pos == offset) { > > index++; > > - m->index = index; > > break; > > } > > p = m->op->next(m, p, &index); > > Of course this looks correct, but how > are you _absolutely sure_ about this? > > Perhaps the m->op->stop(m, p) call below > the break, which takes m as an argument, > needs an updated m->index. Not only that, but ->next might also look at m->index. This is not performance critical; don't try to optimise it. Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%. -- Donald Knuth