Tue, Sep 12, 2017 at 01:33:31AM CEST, xiyou.wangc...@gmail.com wrote: >This patch fixes the following ugliness of tc filter chain refcnt: > >a) tp proto should hold a refcnt to the chain too. This significantly > simplifies the logic. > >b) Chain 0 is no longer special, it is created with refcnt=1 like any > other chains. All the ugliness in tcf_chain_put() can be gone! > >c) No need to handle the flushing oddly, because block still holds > chain 0, it can not be released, this guarantees block is the last > user. > >d) The race condition with RCU callbacks is easier to handle with just > a rcu_barrier(). Much easier to understand, nothing to hide. Thanks > to the previous patch. Please see also the comments in code. > >e) Make the code understandable by humans, much less error-prone. > >Fixes: 744a4cf63e52 ("net: sched: fix use after free when tcf_chain_destroy is >called multiple times") >Fixes: 5bc1701881e3 ("net: sched: introduce multichain support for filters") >Cc: Jiri Pirko <j...@mellanox.com> >Cc: Jamal Hadi Salim <j...@mojatatu.com> >Signed-off-by: Cong Wang <xiyou.wangc...@gmail.com>
Looking good to me. Thanks! Acked-by: Jiri Pirko <j...@mellanox.com>