|SUCCESS|dpdk|3ad402fa4f| intel-Functional

sys_stv at intel.com sys_stv at intel.com
Fri Oct 16 02:01:34 CEST 2026


Test-Label: intel-Functional
Test-Status: SUCCESS
_Functional PASS_

DPDK git repo: dpdk
commit 3ad402fa4f567ff6b88612b91b577c40d92be29a
Author: Marat Khalili <qm2k21 at gmail.com>
Date:   Tue Aug 25 10:55:29 2026 +0100

    bpf/validate: fix mask calculation for 32-bit operations
    
    Function `eval_umax_bits`  when calculating the mask matching the
    register value counted leading zeroes in 64-bit representation but then
    subtracted it from the instruction width (32 for BPF_ALU instructions)
    producing zero or negative mask length, all unsupported by macro
    `RTE_LEN2MASK`. This function is used by functions `eval_and`, `eval_or`
    and `eval_xor` evaluating `BPF_ALU | BPF_AND`, `BPF_ALU | BPF_OR` and
    `BPF_ALU | BPF_XOR` correspondingly
    
    E.g. consider the following program with the current validation code:
    
        Tested program:
            0:  mov r0, #0x0
            1:  ldxdw r2, [r1 + 0]
            2:  jgt r2, #0x7fffffff, L7
            3:  jslt r2, #0x0, L7
            4:  jsgt r2, #0x7fffffff, L7
            5:  and32 r2, #0x7fffffff  ; tested instruction
            6:  mov r0, #0x1
            7:  exit
        Pre-state:
           r2:  0..INT32_MAX
        Post-state:
           r2:  0..INT64_MAX
    
    At step 6 validator presumed that r2 may have values up to INT64_MAX,
    which is impossible for the 32-bit bitwise operation on 32-bit operands
    and could cause false positives.
    
    With sanitizer the following diagnostic is generated:
    
        lib/bpf/bpf_validate.c:821:9: runtime error: shift exponent 65 is
        too large for 64-bit type 'long unsigned int'
            #0 0x00000837d9b5 in eval_umax_bits lib/bpf/bpf_validate.c:821
            #1 0x00000837d9f3 in eval_uand_max lib/bpf/bpf_validate.c:828
            #2 0x00000837df83 in eval_and lib/bpf/bpf_validate.c:851
            #3 0x000008384faf in eval_alu lib/bpf/bpf_validate.c:1155
            #4 0x000008396c24 in evaluate lib/bpf/bpf_validate.c:2999
    
    Similarly for `or32 r2, #0x0`, `xor32 r2, #0x0`.
    
    Found using ESBMC (https://esbmc.github.io/docs/) through an agentic
    verification workflow, with integer-overflow and undefined-shift checks
    enabled.
    
    To fix the issue change to subtracting clz64 result from 64 instead of
    instruction width, add tests. Remove no-longer-used opsz argument
    (truncation of inputs to 32 bits is handled by the caller `eval_alu`).
    
    Fixes: 8021917293d0 ("bpf: add extra validation for input BPF program")
    Cc: stable at dpdk.org
    
    Reported-by: Sebti Mouelhi <sebti.mouelhi at huawei.com>
    Signed-off-by: Marat Khalili <marat.khalili at huawei.com>
    Acked-by: Konstantin Ananyev <konstantin.ananyev at huawei.com>

Smoke-Testing Summary : 31 Case Done, 31 Successful, 0 Failures      


OS : Ubuntu 24.04.4 LTS       
Kernel : 6.8.0-71-generic         
GCC : 13.3.0-6ubuntu2~24.04.1        
NIC : Ethernet Controller XL710 for 40GbE QSFP+         
Target : x86_64-native-linuxapp-gcc      

	Test result details:
	+-----------------+---------------------------------------------------+-------+
	| suite           | case                                              | status|
	+-----------------+---------------------------------------------------+-------+
	| checksum_offload| test_do_not_insert_checksum_on_the_transmit_packet| passed|
	| checksum_offload| test_hardware_checksum_check_ip_rx                | passed|
	| checksum_offload| test_hardware_checksum_check_ip_tx                | passed|
	| checksum_offload| test_hardware_checksum_check_l4_rx                | passed|
	| checksum_offload| test_hardware_checksum_check_l4_tx                | passed|
	| checksum_offload| test_insert_checksum_on_the_transmit_packet       | passed|
	| checksum_offload| test_rx_checksum_valid_flags                      | passed|
	| checksum_offload| test_checksum_offload_with_vlan                   | n/a   |
	| dual_vlan       | test_dual_vlan_priority_rxtx                      | passed|
	| dual_vlan       | test_vlan_filter_config                           | passed|
	| dual_vlan       | test_vlan_filter_table                            | passed|
	| dual_vlan       | test_vlan_insert_config                           | passed|
	| dual_vlan       | test_vlan_random_test                             | passed|
	| dual_vlan       | test_vlan_strip_config                            | passed|
	| dual_vlan       | test_vlan_synthetic_test                          | passed|
	| dual_vlan       | test_vlan_tpid_config                             | passed|
	| dual_vlan       | test_vlan_stripq_config                           | n/a   |
	| jumboframes     | test_jumboframes_bigger_jumbo                     | passed|
	| jumboframes     | test_jumboframes_jumbo_jumbo                      | passed|
	| jumboframes     | test_jumboframes_jumbo_nojumbo                    | passed|
	| jumboframes     | test_jumboframes_normal_jumbo                     | passed|
	| jumboframes     | test_jumboframes_normal_nojumbo                   | passed|
	| rxtx_offload    | test_rxoffload_port_all                           | passed|
	| rxtx_offload    | test_rxoffload_port_cmdline                       | passed|
	| rxtx_offload    | test_txoffload_port                               | passed|
	| rxtx_offload    | test_txoffload_port_all                           | passed|
	| rxtx_offload    | test_txoffload_port_checksum                      | passed|
	| rxtx_offload    | test_txoffload_port_cmdline                       | passed|
	| rxtx_offload    | test_txoffload_port_multi_segs                    | passed|
	| rxtx_offload    | test_txoffload_queue                              | passed|
	| rxtx_offload    | test_rxoffload_queue                              | n/a   |
	+-----------------+---------------------------------------------------+-------+


DPDK STV team


More information about the test-report mailing list