diff options
author | Jiri Pirko <jiri@mellanox.com> | 2017-08-18 10:10:43 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-08-18 19:19:11 +0200 |
commit | acc8b31665b4cc17b35c4fa445427f7e2f6dc86b (patch) | |
tree | a81f0632c483e2d8733a401339b9d5fbef3c67ba | |
parent | bpf: Update sysctl documentation to list all supported architectures (diff) | |
download | linux-acc8b31665b4cc17b35c4fa445427f7e2f6dc86b.tar.xz linux-acc8b31665b4cc17b35c4fa445427f7e2f6dc86b.zip |
net: sched: fix p_filter_chain check in tcf_chain_flush
The dereference before check is wrong and leads to an oops when
p_filter_chain is NULL. The check needs to be done on the pointer to
prevent NULL dereference.
Fixes: f93e1cdcf42c ("net/sched: fix filter flushing")
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Acked-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/sched/cls_api.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c index 39da0c5801c9..9fd44c221347 100644 --- a/net/sched/cls_api.c +++ b/net/sched/cls_api.c @@ -205,7 +205,7 @@ static void tcf_chain_flush(struct tcf_chain *chain) { struct tcf_proto *tp; - if (*chain->p_filter_chain) + if (chain->p_filter_chain) RCU_INIT_POINTER(*chain->p_filter_chain, NULL); while ((tp = rtnl_dereference(chain->filter_chain)) != NULL) { RCU_INIT_POINTER(chain->filter_chain, tp->next); |