diff options
author | Vlad Buslov <vladbu@mellanox.com> | 2019-02-25 16:38:31 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-02-25 19:18:17 +0100 |
commit | 6676d5e416eecaf4e823a2c3903aa132ffc2ede0 (patch) | |
tree | 81e76c70ae94703bfa4e235ea6ec5e888606a5e8 /include/net/pkt_cls.h | |
parent | net: dsa: mv88e6xxx: Fix phylink_validate for Topaz family (diff) | |
download | linux-6676d5e416eecaf4e823a2c3903aa132ffc2ede0.tar.xz linux-6676d5e416eecaf4e823a2c3903aa132ffc2ede0.zip |
net: sched: set dedicated tcf_walker flag when tp is empty
Using tcf_walker->stop flag to determine when tcf_walker->fn() was called
at least once is unreliable. Some classifiers set 'stop' flag on error
before calling walker callback, other classifiers used to call it with NULL
filter pointer when empty. In order to prevent further regressions, extend
tcf_walker structure with dedicated 'nonempty' flag. Set this flag in
tcf_walker->fn() implementation that is used to check if classifier has
filters configured.
Fixes: 8b64678e0af8 ("net: sched: refactor tp insert/delete for concurrent execution")
Signed-off-by: Vlad Buslov <vladbu@mellanox.com>
Suggested-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/pkt_cls.h')
-rw-r--r-- | include/net/pkt_cls.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/pkt_cls.h b/include/net/pkt_cls.h index 58ea48e1221c..d5e7a1af346f 100644 --- a/include/net/pkt_cls.h +++ b/include/net/pkt_cls.h @@ -17,6 +17,7 @@ struct tcf_walker { int stop; int skip; int count; + bool nonempty; unsigned long cookie; int (*fn)(struct tcf_proto *, void *node, struct tcf_walker *); }; |