On Thu, Jun 7, 2018 at 4:48 PM, <gree...@candelatech.com> wrote: > diff --git a/include/net/fq_impl.h b/include/net/fq_impl.h > index be7c0fa..cb911f0 100644 > --- a/include/net/fq_impl.h > +++ b/include/net/fq_impl.h > @@ -78,7 +78,10 @@ static struct sk_buff *fq_tin_dequeue(struct fq *fq, > return NULL; > } > > - flow = list_first_entry(head, struct fq_flow, flowchain); > + flow = list_first_entry_or_null(head, struct fq_flow, flowchain); > + > + if (WARN_ON_ONCE(!flow)) > + return NULL;
This does not make sense either. list_first_entry_or_null() returns NULL only when the list is empty, but we already check list_empty() right before this code, and it is protected by fq->lock.