On Mon, Nov 27, 2017 at 11:11 AM, Jakub Kicinski <jakub.kicin...@netronome.com> wrote: > When cls_bpf offload was added it seemed like a good idea to > call cls_bpf_delete_prog() instead of extending the error > handling path, since the software state is fully initialized > at that point. This handling of errors without jumping to > the end of the function is error prone, as proven by later > commit missing that extra call to __cls_bpf_delete_prog(). > > __cls_bpf_delete_prog() is now expected to be invoked with > a reference on exts->net or the field zeroed out. The call > on the offload's error patch does not fullfil this requirement, > leading to each error stealing a reference on net namespace. > > Create a function undoing what cls_bpf_set_parms() did and > use it from __cls_bpf_delete_prog() and the error path. > > Fixes: aae2c35ec892 ("cls_bpf: use tcf_exts_get_net() before call_rcu()") > Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com> > Reviewed-by: Simon Horman <simon.hor...@netronome.com>
Acked-by: Cong Wang <xiyou.wangc...@gmail.com> Thanks.