On Thu, Nov 9, 2017 at 2:31 PM, Roman Mashak <m...@mojatatu.com> wrote: > Cong Wang <xiyou.wangc...@gmail.com> writes: >> @@ -124,8 +130,10 @@ static int cls_cgroup_change(struct net *net, struct >> sk_buff *in_skb, >> goto errout; >> >> rcu_assign_pointer(tp->root, new); >> - if (head) >> + if (head) { >> + tcf_exts_get_net(&head->exts); >> call_rcu(&head->rcu, cls_cgroup_destroy_rcu); > > In this case why do you not need to care about success/failure of > tcf_exts_get_net() ?
The answer is right in the changelog you omitted... Quoted below: "Note, on ->destroy() path we have to respect the return value of tcf_exts_get_net(), on other paths it should always return true, so we don't need to care."