Bug 1289

Summary: rte_table: lookup functions have UB for ctz
Product: DPDK Reporter: Dmitrii Loginov (qrealka)
Component: otherAssignee: dev
Status: UNCONFIRMED ---    
Severity: normal    
Priority: Normal    
Version: 23.11   
Target Milestone: ---   
Hardware: x86   
OS: Linux   

Description Dmitrii Loginov 2023-09-15 13:49:01 CEST
Macros 'lookup2_stage0_with_odd_support' can call rte_ctz with zero value (pkt_mask), which is undefined behaviour based on the GCC manual:
 https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

Quote: "
Built-in Function: int __builtin_ctz (unsigned int x)
Returns the number of trailing 0-bits in x, starting at the least significant bit position. If x is 0, the result is undefined.
"

It is confirmed by checking this code in GCC-13 with ASAN.