Check that filter is not NULL before passing it to tcf_walker->fn()
callback in cls_cgroup_walk(). This can happen when cls_cgroup_change()
failed to set first filter.

Fixes: ed76f5edccc9 ("net: sched: protect filter_chain list with 
filter_chain_lock mutex")
Signed-off-by: Vlad Buslov <vla...@mellanox.com>
---
 net/sched/cls_cgroup.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/net/sched/cls_cgroup.c b/net/sched/cls_cgroup.c
index 1cef3b416094..02b05066b635 100644
--- a/net/sched/cls_cgroup.c
+++ b/net/sched/cls_cgroup.c
@@ -158,6 +158,8 @@ static void cls_cgroup_walk(struct tcf_proto *tp, struct 
tcf_walker *arg,
        if (arg->count < arg->skip)
                goto skip;
 
+       if (!head)
+               return;
        if (arg->fn(tp, head, arg) < 0) {
                arg->stop = 1;
                return;
-- 
2.13.6

Reply via email to