Johannes Berg <johan...@sipsolutions.net> writes:

> +static void fq_tin_filter(struct fq *fq,
> +                       struct fq_tin *tin,
> +                       fq_skb_filter_t filter_func,
> +                       void *filter_data,
> +                       fq_skb_free_t free_func)
> +{
> +     struct list_head *head;
> +     struct fq_flow *flow;
> +
> +     lockdep_assert_held(&fq->lock);
> +
> +     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?

-Toke

Reply via email to