On Fri 15 Feb 2019 at 22:46, Stefano Brivio <sbri...@redhat.com> wrote:
> On Thu, 14 Feb 2019 09:47:11 +0200
> Vlad Buslov <vla...@mellanox.com> wrote:
>
>>  static int fl_hw_replace_filter(struct tcf_proto *tp,
>> -                            struct cls_fl_filter *f,
>> +                            struct cls_fl_filter *f, bool rtnl_held,
>>                              struct netlink_ext_ack *extack)
>>  {
>>      struct tc_cls_flower_offload cls_flower = {};
>>      struct tcf_block *block = tp->chain->block;
>>      bool skip_sw = tc_skip_sw(f->flags);
>> -    int err;
>> +    int err = 0;
>> +
>> +    if (!rtnl_held)
>> +            rtnl_lock();
>>  
>>      cls_flower.rule = flow_rule_alloc(tcf_exts_num_actions(&f->exts));
>>      if (!cls_flower.rule)
>
>                 return -ENOMEM;
>
> Don't you need to:
>
>               err = -ENOMEM;
>               goto errout;
>
> here?
>
> Same...
>
>         err = tc_setup_flow_action(&cls_flower.rule->action, &f->exts);
>         if (err) {
>                 kfree(cls_flower.rule);
>                 if (skip_sw) {
>                         NL_SET_ERR_MSG_MOD(extack, "Failed to setup flow 
> action");
>                         return err;
>
> here,
>
>                 }
>                 return 0;
>
> and here.

Thanks for catching this!
These error handlers were introduced by recent Pablo's patches and I
missed them during rebase.

Reply via email to