Thread (14 messages) flat view 14 messages, 3 authors, 2017-09-13

Re: [Patch net v3 2/3] net_sched: fix reference counting of tc filter chain

From: Jiri Pirko <jiri@resnulli.us>
Date: 2017-09-12 10:43:15

Tue, Sep 12, 2017 at 01:33:31AM CEST, xiyou.wangcong@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 <redacted>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>
Signed-off-by: Cong Wang <redacted>
Looking good to me. Thanks!

Acked-by: Jiri Pirko <redacted>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help