Re: [bug report] net/sched: use the hardware intermediate representation for matchall

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 08/05/2019 09:19, Dan Carpenter wrote:
> On Wed, May 08, 2019 at 08:41:13AM +0100, Pieter Jansen van Vuuren wrote:
>> On 08/05/2019 08:17, Dan Carpenter wrote:
>>> Hello Pieter Jansen van Vuuren,
>>>
>>> The patch f00cbf196814: "net/sched: use the hardware intermediate
>>> representation for matchall" from May 4, 2019, leads to the following
>>> static checker warning:
>>>
>>> 	net/sched/cls_matchall.c:317 mall_reoffload()
>>> 	error: double free of 'cls_mall.rule'
>>>
>>> net/sched/cls_matchall.c
>>>    286  static int mall_reoffload(struct tcf_proto *tp, bool add, tc_setup_cb_t *cb,
>>>    287                            void *cb_priv, struct netlink_ext_ack *extack)
>>>    288  {
>>>    289          struct cls_mall_head *head = rtnl_dereference(tp->root);
>>>    290          struct tc_cls_matchall_offload cls_mall = {};
>>>    291          struct tcf_block *block = tp->chain->block;
>>>    292          int err;
>>>    293  
>>>    294          if (tc_skip_hw(head->flags))
>>>    295                  return 0;
>>>    296  
>>>    297          cls_mall.rule = flow_rule_alloc(tcf_exts_num_actions(&head->exts));
>>>    298          if (!cls_mall.rule)
>>>    299                  return -ENOMEM;
>>>    300  
>>>    301          tc_cls_common_offload_init(&cls_mall.common, tp, head->flags, block,
>>>    302                                     extack);
>>>    303          cls_mall.command = add ?
>>>    304                  TC_CLSMATCHALL_REPLACE : TC_CLSMATCHALL_DESTROY;
>>>    305          cls_mall.cookie = (unsigned long)head;
>>>    306  
>>>    307          err = tc_setup_flow_action(&cls_mall.rule->action, &head->exts);
>>>    308          if (err) {
>>>    309                  kfree(cls_mall.rule);
>>>                         ^^^^^^^^^^^^^^^^^^^
>>>    310                  if (add && tc_skip_sw(head->flags)) {
>>>    311                          NL_SET_ERR_MSG_MOD(extack, "Failed to setup flow action");
>>>    312                          return err;
>>>    313                  }
>>>
>>> My guess is that there should be a "return err;" here?
>>
>> Thank you. Yes, I think this should be "return 0;" instead of "return err;"
> 
> You would know the code better, than I.  :)
> 
> Could you send a patch to Dave?  The merge window is open but he still
> accepts bug fixes.
> 
> regards,
> dan carpenter
> 

Will do. And thank you again.



[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux