On Thu, 2017-10-05 at 14:24 +0200, Toke Høiland-Jørgensen wrote: > > + for (;;) { > > + head = &tin->new_flows; > > + if (list_empty(head)) { > > + head = &tin->old_flows; > > + if (list_empty(head)) > > + break; > > + } > > + > > + flow = list_first_entry(head, struct fq_flow, flowchain); > > + fq_flow_filter(fq, flow, filter_func, filter_data, free_func); > > + } > > Isn't this going to loop forever? Good question, I'll admit that I copied this without understanding it from fq_tin_reset(), and didn't think about it much. I think you're right though - I guess this needs to iterate the new_flows and old_flows. johannes