On Fri, Feb 15, 2019 at 4:11 AM Vlad Buslov <vla...@mellanox.com> wrote: > > Check that filter is not NULL before passing it to tcf_walker->fn() > callback. This can happen when mall_change() failed to offload filter to > hardware. > > Signed-off-by: Vlad Buslov <vla...@mellanox.com> > --- > net/sched/cls_matchall.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/net/sched/cls_matchall.c b/net/sched/cls_matchall.c > index a37137430e61..1f9d481b0fbb 100644 > --- a/net/sched/cls_matchall.c > +++ b/net/sched/cls_matchall.c > @@ -247,6 +247,9 @@ static void mall_walk(struct tcf_proto *tp, struct > tcf_walker *arg, > > if (arg->count < arg->skip) > goto skip; > + > + if (!head) > + return;
So head==NULL still counts one given that you check NULL after checking arg->count. Is this expected?