On Fri, 15 Aug 2025 09:33:17 +0800
fengchengwen <fengcheng...@huawei.com> wrote:

> Hi Stephen,
> 
> On 8/15/2025 12:59 AM, Stephen Hemminger wrote:
> > On Thu, 14 Aug 2025 10:52:42 +0800
> > Bingbin Chen <chen.bing...@zte.com.cn> wrote:
> >   
> >> +          } else {
> >> +                  entry = calloc(1, sizeof(struct rte_flow));
> >> +                  entry_flow = calloc(1, sizeof(struct zxdh_flow));
> >> +                  TAILQ_FOREACH(entry, &hw->dh_flow_list, next) {
> >> +                          entry_flow = (struct zxdh_flow 
> >> *)entry->driver_flow;
> >> +                          
> >> offlow_key_dump(&entry_flow->flowentry.fd_flow.key,
> >> +                                          
> >> &entry_flow->flowentry.fd_flow.key_mask, file);
> >> +                          
> >> offlow_result_dump(&entry_flow->flowentry.fd_flow.result, file);
> >> +                  }
> >> +                  rte_free(entry_flow);
> >> +                  rte_free(entry)  
> > 
> > Use the right free function!
> > 
> > ==== 20 line log output for Ubuntu 24.04 (dpdk_unit_test): ====
> > ../drivers/net/zxdh/zxdh_flow.c:641:36: note: returned from 'calloc'
> > 641 |                         key_mask = calloc(1, sizeof(struct 
> > fd_flow_key) * ZXDH_MAX_FLOW_NUM);
> > |                                    
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > ../drivers/net/zxdh/zxdh_flow.c:689:9: error: 'rte_free' called on pointer 
> > returned from a mismatched allocation function [-Werror=mismatched-dealloc]
> > 689 |         rte_free(key);
> > |         ^~~~~~~~~~~~~
> > ../drivers/net/zxdh/zxdh_flow.c:640:31: note: returned from 'calloc'
> > 640 |                         key = calloc(1, sizeof(struct fd_flow_key) * 
> > ZXDH_MAX_FLOW_NUM);
> > |                               
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > ../drivers/net/zxdh/zxdh_flow.c:690:9: error: 'rte_free' called on pointer 
> > returned from a mismatched allocation function [-Werror=mismatched-dealloc]
> > 690 |         rte_free(fd_entry);
> > |         ^~~~~~~~~~~~~~~~~~
> > ../drivers/net/zxdh/zxdh_flow.c:639:36: note: returned from 'calloc'
> > 639 |                         fd_entry = calloc(1, 
> > sizeof(ZXDH_DTB_ACL_ENTRY_INFO_T) * ZXDH_MAX_FLOW_NUM);
> > |                                    
> > ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > cc1: all warnings being treated as errors  
> 
> Just curiosity, which test catch this error? There are no driver rte_flow API 
> test in meson test as I know.
> 
> Thanks
> 
> 

It is caught at compile time with any recent version of Gcc or Clang and glibc.
The function attributes used hint the compiler on what the object free routine 
is.

Reply via email to