Pablo Neira Ayuso <pablo@xxxxxxxxxxxxx> wrote: > > - struct ct_iter_state *st = seq->private; > > + hlist_nulls_for_each_entry(h, n, &st->hash[i], hnnode) { > > hlist_nulls_for_each_entry_rcu ? Yes. > > - if (likely(get_nulls_value(head) == st->bucket)) { > > - if (++st->bucket >= st->htable_size) > > - return NULL; > > + ++skip; > > } > > - head = rcu_dereference( > > - hlist_nulls_first_rcu(&st->hash[st->bucket])); > > This does not rewind if get_nulls_value(head) != st->bucket), > not needed anymore? There are only two choices: 1. rewind and (possibly) dump entries more than once 2. skip to next and miss an entry I'm not sure whats worse/better.