From c22a67d52c6980bb4e7d47c07bcaeb9a0e1a5f15 Mon Sep 17 00:00:00 2001 From: Vineet Gupta Date: Fri, 14 Aug 2026 08:59:33 -0700 Subject: [PATCH 1/2] gcc-bpf: refresh the GCC BPF denylist for GCC-16 The denylist has not been touched since the GCC BPF runner was disabled in January 2025, so it still describes what GCC 15 was failing back then. Rebuild it against GCC-16 of today, which leaves it a good deal shorter. A test is denied outright only when nothing in it passes, otherwise the failing subtests are named individually so that the rest of the test keeps running. Signed-off-by: Vineet Gupta --- ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc | 871 ++---------------- 1 file changed, 91 insertions(+), 780 deletions(-) diff --git a/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc b/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc index a3c745d1..21837deb 100644 --- a/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc +++ b/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc @@ -1,45 +1,39 @@ -arena_htab -async_stack_depth +arena_htab/arena_htab_asm # 1M runaway since v7.2-rc1 +arena_strsearch bad_struct_ops/invalid_prog_reuse -bpf_cookie -bpf_iter/bpf_hash_map -bpf_iter/ksym -bpf_iter/tcp4 -bpf_iter/tcp6 -bpf_iter/udp4 -bpf_iter/udp6 -bpf_iter/unix +bpf_cookie/perf_event # flaky +bpf_ip_check_defrag +bpf_iter/bpf_sockmap_map_iter_fd +bpf_iter/task_pid # The sequence of 8193 jumps is too complex +bpf_iter/task_pidfd # The sequence of 8193 jumps is too complex +bpf_iter/task_sleepable # The sequence of 8193 jumps is too complex +bpf_iter/task_tid # The sequence of 8193 jumps is too complex +bpf_iter/unix # The sequence of 8193 jumps is too complex bpf_iter_setsockopt bpf_iter_setsockopt_unix bpf_mod_race -bpf_nf/tc-bpf-ct -bpf_nf/xdp-ct -bpf_tcp_ca/cubic -btf_dump/btf_dump: bitfields -btf_dump/btf_dump: packing -btf_dump/btf_dump: padding -btf_dump/btf_dump: syntax +bpf_sockmap_map_iter_fd +bpf_tcp_ca/dctcp +bpf_tcp_ca/dctcp_autoattach_map +bpf_tcp_ca/dctcp_fallback +bpftool_metadata +btf_dump btf_map_in_map -cb_refs -cgroup_get_current_cgroup_id -cgroup_iter/cgroup_iter__self_only_css_task cgroup_tcp_skb -cgrp_kfunc +cgrp_kfunc/cgrp_kfunc_acquire_trusted_walked cls_redirect/cls_redirect_dynptr connect_force_port core_autosize -core_read_macros +core_reloc/arrays___err_bad_signed_arr_elem_sz core_reloc/type_id core_reloc/type_id___missing_targets +core_reloc_btfgen/arrays___err_bad_signed_arr_elem_sz core_reloc_btfgen/type_id core_reloc_btfgen/type_id___missing_targets -cpumask/test_acquire_wrong_cpumask cpumask/test_alloc_double_release cpumask/test_alloc_free_cpumask -cpumask/test_alloc_no_release cpumask/test_and_or_xor cpumask/test_copy_any_anyand -cpumask/test_cpumask_null cpumask/test_cpumask_weight cpumask/test_first_firstzero_cpu cpumask/test_firstand_nocpu @@ -49,102 +43,22 @@ cpumask/test_global_mask_array_rcu cpumask/test_global_mask_nested_deep_array_rcu cpumask/test_global_mask_nested_deep_rcu cpumask/test_global_mask_nested_rcu -cpumask/test_global_mask_no_null_check -cpumask/test_global_mask_out_of_rcu cpumask/test_global_mask_rcu -cpumask/test_global_mask_rcu_no_null_check cpumask/test_insert_leave -cpumask/test_insert_remove_no_release cpumask/test_insert_remove_release cpumask/test_intersects_subset -cpumask/test_invalid_nested_array -cpumask/test_mutate_cpumask +cpumask/test_populate +cpumask/test_populate_reject_small_mask +cpumask/test_populate_reject_unaligned +cpumask/test_refcount_null_tracking cpumask/test_set_clear_cpu cpumask/test_setall_clear_cpu cpumask/test_test_and_set_clear -crypto_basic/crypto_acquire -crypto_sanity -deny_namespace -dummy_st_ops/test_unsupported_field_sleepable -dynptr/add_dynptr_to_map1 -dynptr/add_dynptr_to_map2 -dynptr/clone_invalid1 -dynptr/clone_invalid2 -dynptr/clone_invalidate1 -dynptr/clone_invalidate2 -dynptr/clone_invalidate3 -dynptr/clone_invalidate4 -dynptr/clone_invalidate5 -dynptr/clone_invalidate6 -dynptr/clone_skb_packet_data -dynptr/clone_xdp_packet_data -dynptr/data_slice_missing_null_check1 -dynptr/data_slice_missing_null_check2 -dynptr/data_slice_out_of_bounds_map_value -dynptr/data_slice_out_of_bounds_ringbuf -dynptr/data_slice_out_of_bounds_skb -dynptr/data_slice_use_after_release1 -dynptr/data_slice_use_after_release2 -dynptr/dynptr_adjust_invalid -dynptr/dynptr_from_mem_invalid_api -dynptr/dynptr_invalidate_slice_failure -dynptr/dynptr_invalidate_slice_or_null -dynptr/dynptr_invalidate_slice_reinit -dynptr/dynptr_is_null_invalid -dynptr/dynptr_is_rdonly_invalid -dynptr/dynptr_overwrite_ref -dynptr/dynptr_partial_slot_invalidate -dynptr/dynptr_pruning_overwrite -dynptr/dynptr_pruning_type_confusion -dynptr/dynptr_read_into_slot -dynptr/dynptr_size_invalid -dynptr/dynptr_slice_var_len1 -dynptr/dynptr_slice_var_len2 -dynptr/dynptr_var_off_overwrite -dynptr/global -dynptr/invalid_data_slices -dynptr/invalid_helper1 +dmabuf_iter dynptr/invalid_helper2 -dynptr/invalid_offset -dynptr/invalid_read1 -dynptr/invalid_read2 -dynptr/invalid_read3 -dynptr/invalid_read4 -dynptr/invalid_slice_rdwr_rdonly -dynptr/invalid_write1 -dynptr/invalid_write2 -dynptr/invalid_write3 -dynptr/invalid_write4 -dynptr/release_twice -dynptr/release_twice_callback -dynptr/ringbuf_invalid_api -dynptr/ringbuf_missing_release1 -dynptr/ringbuf_missing_release2 -dynptr/ringbuf_missing_release_callback -dynptr/ringbuf_release_uninit_dynptr -dynptr/skb_invalid_ctx -dynptr/skb_invalid_ctx_fentry -dynptr/skb_invalid_ctx_fexit -dynptr/skb_invalid_data_slice1 -dynptr/skb_invalid_data_slice2 -dynptr/skb_invalid_data_slice3 -dynptr/skb_invalid_data_slice4 -dynptr/skb_invalid_slice_write -dynptr/test_dynptr_reg_type dynptr/test_dynptr_skb_no_buff -dynptr/test_dynptr_skb_small_buff dynptr/test_dynptr_skb_tp_btf dynptr/test_read_write -dynptr/uninit_write_into_slot -dynptr/use_after_invalid -dynptr/xdp_invalid_ctx -dynptr/xdp_invalid_data_slice1 -dynptr/xdp_invalid_data_slice2 -exceptions/check_assert_eq_int_max -exceptions/check_assert_eq_int_min -exceptions/check_assert_eq_llong_max -exceptions/check_assert_eq_llong_min -exceptions/check_assert_eq_zero exceptions/check_assert_ge_neg exceptions/check_assert_ge_pos exceptions/check_assert_ge_zero @@ -162,247 +76,71 @@ exceptions/check_assert_range_s64 exceptions/check_assert_range_u64 exceptions/check_assert_single_range_s64 exceptions/check_assert_single_range_u64 -exceptions/check_assert_with_return -exceptions/exception_ext -exceptions/exception_ext_mod_cb_runtime +exceptions/non-throwing extension -> main subprog exceptions/non-throwing extension -> non-throwing subprog exceptions/non-throwing extension -> throwing global subprog -exceptions/non-throwing fentry -> exception_cb -exceptions/non-throwing fexit -> exception_cb exceptions/non-throwing fmod_ret -> non-throwing global subprog -exceptions/reject_async_callback_throw -exceptions/reject_exception_throw_cb -exceptions/reject_exception_throw_cb_diff -exceptions/reject_set_exception_cb_bad_ret2 exceptions/reject_subprog_with_lock -exceptions/reject_subprog_with_rcu_read_lock -exceptions/reject_with_cb -exceptions/reject_with_cb_reference -exceptions/reject_with_lock -exceptions/reject_with_rbtree_add_throw -exceptions/reject_with_rcu_read_lock -exceptions/reject_with_reference -exceptions/reject_with_subprog_reference -exceptions/throwing extension (with custom cb) -> exception_cb -exceptions/throwing extension -> global func in exception_cb +exceptions/throwing extension -> main subprog exceptions/throwing extension -> non-throwing global subprog exceptions/throwing extension -> throwing global subprog -exceptions/throwing fentry -> exception_cb -exceptions/throwing fexit -> exception_cb -failures_wq +fd_htab_lookup fexit_bpf2bpf/fmod_ret_freplace fexit_bpf2bpf/func_replace fexit_bpf2bpf/func_replace_global_func fexit_bpf2bpf/func_replace_multi -fexit_bpf2bpf/func_sockmap_update fexit_bpf2bpf/target_yes_callees -global_func_dead_code +fs_kfuncs global_map_resize +global_percpu_data # crashing kernel: bad .percpu address inner_array_lookup -irq/irq_flag_overwrite -irq/irq_flag_overwrite_partial -irq/irq_global_subprog -irq/irq_ooo_refs_array -irq/irq_restore_4_subprog -irq/irq_restore_bad_arg -irq/irq_restore_invalid -irq/irq_restore_iter -irq/irq_restore_missing_1_subprog -irq/irq_restore_missing_2 -irq/irq_restore_missing_2_subprog -irq/irq_restore_missing_3 -irq/irq_restore_missing_3_minus_2 -irq/irq_restore_missing_3_minus_2_subprog -irq/irq_restore_missing_3_subprog -irq/irq_restore_ooo -irq/irq_restore_ooo_3 -irq/irq_restore_ooo_3_subprog -irq/irq_save_bad_arg -irq/irq_save_invalid -irq/irq_save_iter -irq/irq_sleepable_helper -irq/irq_sleepable_kfunc -iters/compromise_iter_w_direct_write_and_skip_destroy_fail -iters/compromise_iter_w_direct_write_fail -iters/compromise_iter_w_helper_write_fail -iters/create_and_forget_to_destroy_fail -iters/css_task -iters/delayed_precision_mark -iters/delayed_read_mark -iters/destroy_without_creating_fail -iters/double_create_fail -iters/double_destroy_fail -iters/iter_css_lock_and_unlock -iters/iter_css_task_for_each -iters/iter_css_without_lock -iters/iter_destroy_bad_arg -iters/iter_err_too_permissive1 -iters/iter_err_too_permissive2 -iters/iter_err_too_permissive3 iters/iter_err_unsafe_asm_loop -iters/iter_err_unsafe_c_loop -iters/iter_nested_iters -iters/iter_new_bad_arg -iters/iter_next_bad_arg -iters/iter_next_ptr_mem_not_trusted -iters/iter_next_rcu_not_trusted -iters/iter_next_rcu_or_null -iters/iter_next_trusted_or_null -iters/iter_obfuscate_counter -iters/iter_subprog_iters -iters/iter_tasks_lock_and_unlock -iters/iter_tasks_without_lock -iters/leak_iter_from_subprog_fail -iters/loop_state_deps1 -iters/loop_state_deps2 -iters/missing_null_check_fail -iters/next_after_destroy_fail -iters/next_without_new_fail -iters/read_from_iter_slot_fail -iters/stacksafe_should_not_conflate_stack_spill_and_iter -iters/testmod_seq_getter_after_bad -iters/testmod_seq_getter_before_bad -iters/wrong_sized_read_fail -jeq_infer_not_null -jit_probe_mem kfree_skb -kfunc_call/kfunc_call_ctx -kfunc_call/kfunc_call_test1 -kfunc_call/kfunc_call_test2 -kfunc_call/kfunc_call_test4 -kfunc_call/kfunc_call_test_get_mem -kfunc_call/kfunc_call_test_ref_btf_id -kfunc_call/kfunc_call_test_static_unused_arg -kfunc_call/kfunc_syscall_test -kfunc_call/kfunc_syscall_test_null -kfunc_dynptr_param/not_ptr_to_stack -kfunc_dynptr_param/not_valid_dynptr -kfunc_param_nullable/kfunc_dynptr_nullable_test3 -kprobe_multi_test/kprobe_session_return_2 -kptr_xchg_inline l4lb_all/l4lb_noinline l4lb_all/l4lb_noinline_dynptr linked_list -local_kptr_stash/drop_rb_node_off -local_kptr_stash/local_kptr_stash_local_with_root -local_kptr_stash/local_kptr_stash_plain -local_kptr_stash/local_kptr_stash_simple -local_kptr_stash/local_kptr_stash_unstash -local_kptr_stash/refcount_acquire_without_unstash -local_kptr_stash/stash_rb_nodes +linked_list_peek/test_back_spinlock_false +linked_list_peek/test_front_spinlock_false log_buf/obj_load_log_buf log_fixup/bad_core_relo_subprog -log_fixup/bad_core_relo_trunc_full lru_bug -map_btf +lwt_seg6local +map_btf/inner_array_btf map_in_map/acc_map_in_array map_in_map/acc_map_in_htab map_in_map/sleepable_acc_map_in_array map_in_map/sleepable_acc_map_in_htab -map_kptr/correct_btf_id_check_size -map_kptr/inherit_untrusted_on_walk -map_kptr/kptr_xchg_possibly_null -map_kptr/kptr_xchg_ref_state -map_kptr/mark_ref_as_untrusted_or_null -map_kptr/marked_as_untrusted_or_null -map_kptr/non_const_var_off -map_kptr/non_const_var_off_kptr_xchg -map_kptr/reject_bad_type_xchg -map_kptr/reject_kptr_xchg_on_unref -map_kptr/reject_member_of_ref_xchg -map_kptr/reject_untrusted_xchg -map_kptr/success-map map_ptr -nested_trust/test_invalid_nested_user_cpus -nested_trust/test_invalid_skb_field -percpu_alloc/array -percpu_alloc/array_sleepable -percpu_alloc/cgrp_local_storage -percpu_alloc/test_array_map_1 -percpu_alloc/test_array_map_2 -percpu_alloc/test_array_map_3 -percpu_alloc/test_array_map_4 -percpu_alloc/test_array_map_5 -percpu_alloc/test_array_map_6 -percpu_alloc/test_array_map_7 -percpu_alloc/test_array_map_8 -perf_branches/perf_branches_no_hw +map_uninit_mem_exposure pkt_access -preempt_lock/preempt_global_subprog_test -preempt_lock/preempt_lock_missing_1 -preempt_lock/preempt_lock_missing_1_subprog -preempt_lock/preempt_lock_missing_2 -preempt_lock/preempt_lock_missing_2_minus_1_subprog -preempt_lock/preempt_lock_missing_2_subprog -preempt_lock/preempt_lock_missing_3 -preempt_lock/preempt_lock_missing_3_minus_2 -preempt_lock/preempt_sleepable_helper -preempt_lock/preempt_sleepable_kfunc -preempted_bpf_ma_op prog_run_opts -prog_tests_framework -raw_tp_null -rbtree_fail +rbtree_fail/rbtree_api_nolock_add +rbtree_fail/rbtree_api_nolock_first +rbtree_fail/rbtree_api_nolock_remove +rbtree_search/rbtree_search +rbtree_search/test_left_spinlock_false +rbtree_search/test_right_spinlock_false +rbtree_search/test_root_spinlock_false rbtree_success recursion -refcounted_kptr -refcounted_kptr_fail -refcounted_kptr_wrong_owner reference_tracking/sk_lookup_success +res_spin_lock_success ringbuf_multi setget_sockopt sk_lookup skc_to_unix_sock -sock_addr/recvmsg4: attach prog with wrong attach type -sock_addr/recvmsg4: recvfrom (dgram) -sock_addr/recvmsg6: attach prog with wrong attach type -sock_addr/recvmsg6: recvfrom (dgram) -sock_addr/sendmsg4: attach prog with wrong attach type -sock_addr/sendmsg4: kernel_sendmsg (dgram) -sock_addr/sendmsg4: kernel_sendmsg deny (dgram) -sock_addr/sendmsg4: sendmsg (dgram) -sock_addr/sendmsg4: sendmsg deny (dgram) -sock_addr/sendmsg4: sock_sendmsg (dgram) -sock_addr/sendmsg4: sock_sendmsg deny (dgram) -sock_addr/sendmsg6: attach prog with wrong attach type -sock_addr/sendmsg6: kernel_sendmsg (dgram) -sock_addr/sendmsg6: kernel_sendmsg [::] (BSD'ism) (dgram) -sock_addr/sendmsg6: kernel_sendmsg deny (dgram) -sock_addr/sendmsg6: sendmsg (dgram) -sock_addr/sendmsg6: sendmsg IPv4-mapped IPv6 (dgram) -sock_addr/sendmsg6: sendmsg [::] (BSD'ism) (dgram) -sock_addr/sendmsg6: sendmsg deny (dgram) -sock_addr/sendmsg6: sendmsg dst IP = [::] (BSD'ism) (dgram) -sock_addr/sendmsg6: sock_sendmsg (dgram) -sock_addr/sendmsg6: sock_sendmsg [::] (BSD'ism) (dgram) -sock_addr/sendmsg6: sock_sendmsg deny (dgram) -sock_destroy/trace_tcp_destroy_sock +sock_addr sock_fields -sockmap_listen/sockhash IPv4 TCP test_reuseport_mixed_groups -sockmap_listen/sockhash IPv4 TCP test_reuseport_select_connected -sockmap_listen/sockhash IPv4 UDP test_reuseport_mixed_groups -sockmap_listen/sockhash IPv4 UDP test_reuseport_select_connected -sockmap_listen/sockhash IPv6 TCP test_reuseport_mixed_groups -sockmap_listen/sockhash IPv6 TCP test_reuseport_select_connected -sockmap_listen/sockhash IPv6 UDP test_reuseport_mixed_groups -sockmap_listen/sockhash IPv6 UDP test_reuseport_select_connected -sockmap_listen/sockmap IPv4 TCP test_reuseport_mixed_groups -sockmap_listen/sockmap IPv4 TCP test_reuseport_select_connected -sockmap_listen/sockmap IPv4 UDP test_reuseport_mixed_groups -sockmap_listen/sockmap IPv4 UDP test_reuseport_select_connected -sockmap_listen/sockmap IPv6 TCP test_reuseport_mixed_groups -sockmap_listen/sockmap IPv6 TCP test_reuseport_select_connected -sockmap_listen/sockmap IPv6 UDP test_reuseport_mixed_groups -sockmap_listen/sockmap IPv6 UDP test_reuseport_select_connected +sockmap_basic/sockhash copy +sockmap_basic/sockmap copy +sockmap_strp # flaky spin_lock -struct_ops_module/unsupported_ops +stream_arena_fault_address +stream_success/stream_arena_subprog_fault +stream_syscall +struct_ops_arena/arena_arg +struct_ops_arena/arena_arg_attach syscall -tailcalls/classifier_0 -tailcalls/classifier_1 -tailcalls/reject_tail_call_preempt_lock -tailcalls/reject_tail_call_rcu_lock -tailcalls/reject_tail_call_ref -tailcalls/reject_tail_call_spin_lock tailcalls/tailcall_6 tailcalls/tailcall_bpf2bpf_2 tailcalls/tailcall_bpf2bpf_3 @@ -410,62 +148,23 @@ tailcalls/tailcall_bpf2bpf_fentry tailcalls/tailcall_bpf2bpf_fentry_entry tailcalls/tailcall_bpf2bpf_fentry_fexit tailcalls/tailcall_bpf2bpf_fexit -tailcalls/tailcall_bpf2bpf_hierarchy_2 +tailcalls/tailcall_bpf2bpf_fexit_links tailcalls/tailcall_bpf2bpf_hierarchy_3 -task_kfunc -task_local_storage/uptr_across_pages -task_local_storage/uptr_basic -task_local_storage/uptr_kptr_xchg -task_local_storage/uptr_map_failure_e2big -task_local_storage/uptr_map_failure_kstruct -task_local_storage/uptr_map_failure_size0 +task_local_data task_local_storage/uptr_no_null_check -task_local_storage/uptr_obj_new -task_local_storage/uptr_update_failure tc_bpf/tc_bpf_non_root +tc_edt # flaky tc_redirect/tc_redirect_dtime tcp_custom_syncookie tcp_hdr_options -test_bpf_ma -test_global_funcs/arg_tag_ctx_kprobe -test_global_funcs/arg_tag_ctx_perf -test_global_funcs/arg_tag_ctx_raw_tp -test_global_funcs/global_func1 -test_global_funcs/global_func10 -test_global_funcs/global_func11 -test_global_funcs/global_func12 -test_global_funcs/global_func13 -test_global_funcs/global_func14 -test_global_funcs/global_func15 -test_global_funcs/global_func15_tricky_pruning -test_global_funcs/global_func17 -test_global_funcs/global_func3 -test_global_funcs/global_func5 -test_global_funcs/global_func6 -test_global_funcs/global_func7 test_lsm/lsm_basic test_profiler test_strncmp/strncmp_bad_not_null_term_target -timer +timer_interrupt # flaky timer_mim -token tp_btf_nullable/handle_tp_btf_nullable_bare1 -tunnel -uprobe_multi_test/uprobe_sesison_return_2 -user_ringbuf/user_ringbuf_callback_bad_access1 -user_ringbuf/user_ringbuf_callback_bad_access2 -user_ringbuf/user_ringbuf_callback_const_ptr_to_dynptr_reg_off -user_ringbuf/user_ringbuf_callback_discard_dynptr -user_ringbuf/user_ringbuf_callback_invalid_return -user_ringbuf/user_ringbuf_callback_null_context_read -user_ringbuf/user_ringbuf_callback_null_context_write -user_ringbuf/user_ringbuf_callback_reinit_dynptr_mem -user_ringbuf/user_ringbuf_callback_reinit_dynptr_ringbuf -user_ringbuf/user_ringbuf_callback_submit_dynptr -user_ringbuf/user_ringbuf_callback_write_forbidden verif_scale_pyperf100 verif_scale_pyperf180 -verif_scale_pyperf600 verif_scale_pyperf600_nounroll verif_scale_seg6_loop verif_scale_strobemeta @@ -475,430 +174,42 @@ verif_scale_strobemeta_subprogs verif_scale_sysctl_loop1 verif_scale_sysctl_loop2 verif_scale_xdp_loop -verifier_and/invalid_and_of_negative_number -verifier_and/invalid_range_check -verifier_arena/iter_maps2 -verifier_arena/iter_maps3 -verifier_array_access/a_read_only_array_1_2 -verifier_array_access/a_read_only_array_2_2 -verifier_array_access/a_write_only_array_1_2 -verifier_array_access/a_write_only_array_2_2 -verifier_array_access/an_array_with_a_constant_2 -verifier_array_access/an_array_with_a_register_2 -verifier_array_access/an_array_with_a_variable_2 -verifier_array_access/array_with_no_floor_check -verifier_array_access/with_a_invalid_max_check_1 -verifier_array_access/with_a_invalid_max_check_2 -verifier_basic_stack/invalid_fp_arithmetic -verifier_basic_stack/misaligned_read_from_stack -verifier_basic_stack/stack_out_of_bounds -verifier_bitfield_write -verifier_bits_iter/destroy_uninit -verifier_bits_iter/next_uninit -verifier_bits_iter/no_destroy -verifier_bounds/bounds_map_value_variant_1 -verifier_bounds/bounds_map_value_variant_2 -verifier_bounds/of_boundary_crossing_range_1 -verifier_bounds/of_boundary_crossing_range_2 -verifier_bounds/on_sign_extended_mov_test1 -verifier_bounds/on_sign_extended_mov_test2 -verifier_bounds/reg32_any_reg32_xor_3 -verifier_bounds/reg_any_reg_xor_3 -verifier_bounds/shift_of_maybe_negative_number -verifier_bounds/shift_with_64_bit_input -verifier_bounds/shift_with_oversized_count_operand -verifier_bounds/size_signed_32bit_overflow_test1 -verifier_bounds/size_signed_32bit_overflow_test2 -verifier_bounds/size_signed_32bit_overflow_test3 -verifier_bounds/size_signed_32bit_overflow_test4 -verifier_bounds/var_off_insn_off_test1 -verifier_bounds/var_off_insn_off_test2 -verifier_bounds_deduction/deducing_bounds_from_const_1 -verifier_bounds_deduction/deducing_bounds_from_const_10 -verifier_bounds_deduction/deducing_bounds_from_const_3 -verifier_bounds_deduction/deducing_bounds_from_const_5 -verifier_bounds_deduction/deducing_bounds_from_const_6 -verifier_bounds_deduction/deducing_bounds_from_const_7 -verifier_bounds_deduction/deducing_bounds_from_const_8 -verifier_bounds_deduction/deducing_bounds_from_const_9 -verifier_bounds_mix_sign_unsign/checks_mixing_signed_and_unsigned -verifier_bounds_mix_sign_unsign/signed_and_unsigned_positive_bounds -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_10 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_11 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_12 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_13 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_14 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_15 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_2 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_3 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_5 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_6 -verifier_bounds_mix_sign_unsign/signed_and_unsigned_variant_8 -verifier_btf_ctx_access/ctx_access_u32_pointer_reject_16 -verifier_btf_ctx_access/ctx_access_u32_pointer_reject_32 -verifier_btf_ctx_access/ctx_access_u32_pointer_reject_8 -verifier_cfg/conditional_loop -verifier_cfg/loop2_back_edge -verifier_cfg/loop_back_edge -verifier_cfg/out_of_range_jump -verifier_cfg/out_of_range_jump2 -verifier_cfg/uncond_loop_after_cond_jmp -verifier_cfg/uncond_loop_in_subprog_after_cond_jmp -verifier_cfg/unreachable -verifier_cfg/unreachable2 -verifier_cgroup_inv_retcode/with_invalid_return_code_test1 -verifier_cgroup_inv_retcode/with_invalid_return_code_test3 -verifier_cgroup_inv_retcode/with_invalid_return_code_test5 -verifier_cgroup_inv_retcode/with_invalid_return_code_test6 -verifier_cgroup_inv_retcode/with_invalid_return_code_test7 -verifier_cgroup_skb/data_meta_for_cgroup_skb -verifier_cgroup_skb/flow_keys_for_cgroup_skb -verifier_cgroup_skb/napi_id_for_cgroup_skb -verifier_cgroup_skb/tc_classid_for_cgroup_skb -verifier_cgroup_storage/cpu_cgroup_storage_access_1 -verifier_cgroup_storage/cpu_cgroup_storage_access_2 -verifier_cgroup_storage/cpu_cgroup_storage_access_3 -verifier_cgroup_storage/cpu_cgroup_storage_access_4 -verifier_cgroup_storage/cpu_cgroup_storage_access_5 -verifier_cgroup_storage/cpu_cgroup_storage_access_6 -verifier_cgroup_storage/invalid_cgroup_storage_access_1 -verifier_cgroup_storage/invalid_cgroup_storage_access_2 -verifier_cgroup_storage/invalid_cgroup_storage_access_3 -verifier_cgroup_storage/invalid_cgroup_storage_access_4 -verifier_cgroup_storage/invalid_cgroup_storage_access_5 -verifier_cgroup_storage/invalid_cgroup_storage_access_6 -verifier_const/bprm -verifier_const/tcx1 -verifier_const/tcx4 -verifier_const/tcx7 -verifier_const_or/not_bypass_stack_boundary_checks_1 -verifier_const_or/not_bypass_stack_boundary_checks_2 -verifier_ctx/context_stores_via_bpf_atomic -verifier_ctx/ctx_pointer_to_helper_1 -verifier_ctx/ctx_pointer_to_helper_2 -verifier_ctx/ctx_pointer_to_helper_3 -verifier_ctx/make_ptr_to_ctx_unusable -verifier_ctx/null_check_4_ctx_const -verifier_ctx/null_check_8_null_bind -verifier_ctx/or_null_check_3_1 -verifier_ctx_sk_msg/of_size_in_sk_msg -verifier_ctx_sk_msg/past_end_of_sk_msg -verifier_ctx_sk_msg/read_offset_in_sk_msg -verifier_d_path/d_path_reject -verifier_direct_packet_access/access_test15_spill_with_xadd -verifier_direct_packet_access/direct_packet_access_test3 -verifier_direct_packet_access/id_in_regsafe_bad_access -verifier_direct_packet_access/packet_access_test10_write_invalid -verifier_direct_packet_access/pkt_end_reg_bad_access -verifier_direct_packet_access/pkt_end_reg_both_accesses -verifier_direct_packet_access/test16_arith_on_data_end -verifier_direct_packet_access/test23_x_pkt_ptr_4 -verifier_direct_packet_access/test26_marking_on_bad_access -verifier_direct_packet_access/test28_marking_on_bad_access -verifier_direct_stack_access_wraparound -verifier_global_ptr_args -verifier_global_subprogs -verifier_helper_access_var_len/bitwise_and_jmp_wrong_max -verifier_helper_access_var_len/jmp_signed_no_min_check -verifier_helper_access_var_len/map_adjusted_jmp_wrong_max -verifier_helper_access_var_len/memory_map_jmp_wrong_max -verifier_helper_access_var_len/memory_stack_jmp_bounds_offset -verifier_helper_access_var_len/memory_stack_jmp_wrong_max -verifier_helper_access_var_len/ptr_to_mem_or_null_2 -verifier_helper_access_var_len/ptr_to_mem_or_null_8 -verifier_helper_access_var_len/ptr_to_mem_or_null_9 -verifier_helper_access_var_len/stack_jmp_no_max_check -verifier_helper_packet_access/cls_helper_fail_range_1 -verifier_helper_packet_access/cls_helper_fail_range_2 -verifier_helper_packet_access/cls_helper_fail_range_3 -verifier_helper_packet_access/packet_ptr_with_bad_range_1 -verifier_helper_packet_access/packet_ptr_with_bad_range_2 -verifier_helper_packet_access/packet_test2_unchecked_packet_ptr -verifier_helper_packet_access/ptr_with_too_short_range_1 -verifier_helper_packet_access/ptr_with_too_short_range_2 -verifier_helper_packet_access/test11_cls_unsuitable_helper_1 -verifier_helper_packet_access/test12_cls_unsuitable_helper_2 -verifier_helper_packet_access/test15_cls_helper_fail_sub -verifier_helper_packet_access/test20_pkt_end_as_input -verifier_helper_packet_access/test7_cls_unchecked_packet_ptr -verifier_helper_packet_access/to_packet_test21_wrong_reg -verifier_helper_restricted -verifier_helper_value_access/access_to_map_empty_range -verifier_helper_value_access/access_to_map_negative_range -verifier_helper_value_access/access_to_map_possibly_empty_range -verifier_helper_value_access/access_to_map_wrong_size -verifier_helper_value_access/bounds_check_using_bad_access_1 -verifier_helper_value_access/bounds_check_using_bad_access_2 -verifier_helper_value_access/check_using_s_bad_access_1 -verifier_helper_value_access/check_using_s_bad_access_2 -verifier_helper_value_access/const_imm_negative_range_adjustment_1 -verifier_helper_value_access/const_imm_negative_range_adjustment_2 -verifier_helper_value_access/const_reg_negative_range_adjustment_1 -verifier_helper_value_access/const_reg_negative_range_adjustment_2 -verifier_helper_value_access/imm_out_of_bound_1 -verifier_helper_value_access/imm_out_of_bound_2 -verifier_helper_value_access/imm_out_of_bound_range -verifier_helper_value_access/map_out_of_bound_range -verifier_helper_value_access/map_via_variable_empty_range -verifier_helper_value_access/reg_out_of_bound_1 -verifier_helper_value_access/reg_out_of_bound_2 -verifier_helper_value_access/reg_out_of_bound_range -verifier_helper_value_access/via_const_imm_empty_range -verifier_helper_value_access/via_const_reg_empty_range -verifier_helper_value_access/via_variable_no_max_check_1 -verifier_helper_value_access/via_variable_no_max_check_2 -verifier_helper_value_access/via_variable_wrong_max_check_1 -verifier_helper_value_access/via_variable_wrong_max_check_2 -verifier_int_ptr/arg_ptr_to_long_misaligned -verifier_int_ptr/to_long_size_sizeof_long -verifier_iterating_callbacks/bpf_loop_iter_limit_overflow -verifier_iterating_callbacks/check_add_const_3regs -verifier_iterating_callbacks/check_add_const_3regs_2if -verifier_iterating_callbacks/check_add_const_regsafe_off -verifier_iterating_callbacks/iter_limit_bug -verifier_iterating_callbacks/jgt_imm64_and_may_goto -verifier_iterating_callbacks/loop_detection -verifier_iterating_callbacks/may_goto_self -verifier_iterating_callbacks/unsafe_find_vma -verifier_iterating_callbacks/unsafe_for_each_map_elem -verifier_iterating_callbacks/unsafe_on_2nd_iter -verifier_iterating_callbacks/unsafe_on_zero_iter -verifier_iterating_callbacks/unsafe_ringbuf_drain -verifier_jeq_infer_not_null/unchanged_for_jeq_false_branch -verifier_jeq_infer_not_null/unchanged_for_jne_true_branch -verifier_kfunc_prog_types/cgrp_kfunc_raw_tp -verifier_kfunc_prog_types/cpumask_kfunc_raw_tp -verifier_kfunc_prog_types/task_kfunc_raw_tp -verifier_ld_ind/ind_check_calling_conv_r1 -verifier_ld_ind/ind_check_calling_conv_r2 -verifier_ld_ind/ind_check_calling_conv_r3 -verifier_ld_ind/ind_check_calling_conv_r4 -verifier_ld_ind/ind_check_calling_conv_r5 -verifier_leak_ptr/leak_pointer_into_ctx_1 -verifier_leak_ptr/leak_pointer_into_ctx_2 -verifier_linked_scalars -verifier_loops1/bounded_recursion -verifier_loops1/infinite_loop_in_two_jumps -verifier_loops1/infinite_loop_three_jump_trick -verifier_loops1/loop_after_a_conditional_jump -verifier_lsm/bool_retval_test3 -verifier_lsm/bool_retval_test4 -verifier_lsm/disabled_hook_test1 -verifier_lsm/disabled_hook_test2 -verifier_lsm/disabled_hook_test3 -verifier_lsm/errno_zero_retval_test4 -verifier_lsm/errno_zero_retval_test5 -verifier_lsm/errno_zero_retval_test6 -verifier_lwt/not_permitted_for_lwt_prog -verifier_lwt/packet_write_for_lwt_in -verifier_lwt/packet_write_for_lwt_out -verifier_lwt/tc_classid_for_lwt_in -verifier_lwt/tc_classid_for_lwt_out -verifier_lwt/tc_classid_for_lwt_xmit -verifier_map_in_map/invalid_inner_map_pointer -verifier_map_in_map/on_the_inner_map_pointer -verifier_map_ptr/bpf_map_ptr_write_rejected -verifier_map_ptr/read_non_existent_field_rejected -verifier_map_ptr/read_with_negative_offset_rejected -verifier_map_ptr_mixing -verifier_map_ret_val -verifier_meta_access/meta_access_test10 -verifier_meta_access/meta_access_test2 -verifier_meta_access/meta_access_test3 -verifier_meta_access/meta_access_test4 -verifier_meta_access/meta_access_test5 -verifier_meta_access/meta_access_test6 -verifier_meta_access/meta_access_test9 -verifier_netfilter_ctx/with_invalid_ctx_access_test1 -verifier_netfilter_ctx/with_invalid_ctx_access_test2 -verifier_netfilter_ctx/with_invalid_ctx_access_test3 -verifier_netfilter_ctx/with_invalid_ctx_access_test4 -verifier_netfilter_ctx/with_invalid_ctx_access_test5 -verifier_netfilter_retcode/with_invalid_return_code_test1 -verifier_netfilter_retcode/with_invalid_return_code_test4 -verifier_or_jmp32_k -verifier_prevent_map_lookup -verifier_raw_stack/bytes_spilled_regs_corruption_2 -verifier_raw_stack/load_bytes_invalid_access_1 -verifier_raw_stack/load_bytes_invalid_access_2 -verifier_raw_stack/load_bytes_invalid_access_3 -verifier_raw_stack/load_bytes_invalid_access_4 -verifier_raw_stack/load_bytes_invalid_access_5 -verifier_raw_stack/load_bytes_invalid_access_6 -verifier_raw_stack/load_bytes_negative_len_2 -verifier_raw_stack/load_bytes_spilled_regs_corruption -verifier_raw_stack/skb_load_bytes_negative_len -verifier_raw_stack/skb_load_bytes_zero_len -verifier_raw_tp_writable -verifier_ref_tracking -verifier_reg_equal/subreg_equality_2 -verifier_regalloc/regalloc_and_spill_negative -verifier_regalloc/regalloc_negative -verifier_regalloc/regalloc_src_reg_negative -verifier_ringbuf/ringbuf_invalid_reservation_offset_1 -verifier_ringbuf/ringbuf_invalid_reservation_offset_2 -verifier_runtime_jit -verifier_scalar_ids/check_ids_in_regsafe -verifier_scalar_ids/check_ids_in_regsafe_2 -verifier_scalar_ids/linked_regs_broken_link_2 -verifier_search_pruning/for_u32_spills_u64_fill -verifier_search_pruning/liveness_pruning_and_write_screening -verifier_search_pruning/short_loop1 -verifier_search_pruning/should_be_verified_nop_operation -verifier_search_pruning/tracking_for_u32_spill_fill -verifier_search_pruning/varlen_map_value_access_pruning -verifier_sock/bpf_sk_fullsock_skb_sk -verifier_sock/bpf_sk_release_skb_sk -verifier_sock/bpf_tcp_sock_skb_sk -verifier_sock/dst_port_byte_load_invalid -verifier_sock/dst_port_half_load_invalid_1 -verifier_sock/dst_port_half_load_invalid_2 -verifier_sock/invalidate_pkt_pointers_by_tail_call -verifier_sock/invalidate_pkt_pointers_from_global_func -verifier_sock/map_lookup_elem_smap_key -verifier_sock/map_lookup_elem_sockhash_key -verifier_sock/map_lookup_elem_sockmap_key -verifier_sock/no_null_check_on_ret_1 -verifier_sock/no_null_check_on_ret_2 -verifier_sock/of_bpf_skc_to_helpers -verifier_sock/post_bind4_read_mark -verifier_sock/post_bind4_read_src_ip6 -verifier_sock/post_bind6_read_src_ip4 -verifier_sock/sk_1_1_value_1 -verifier_sock/sk_no_skb_sk_check_1 -verifier_sock/sk_no_skb_sk_check_2 -verifier_sock/sk_sk_type_fullsock_field_1 -verifier_sock/skb_sk_beyond_last_field_1 -verifier_sock/skb_sk_beyond_last_field_2 -verifier_sock/skb_sk_no_null_check -verifier_sock/sock_create_read_src_port -verifier_sock_addr/bind4_bad_return_code -verifier_sock_addr/bind6_bad_return_code -verifier_sock_addr/connect4_bad_return_code -verifier_sock_addr/connect6_bad_return_code -verifier_sock_addr/connect_unix_bad_return_code -verifier_sock_addr/getpeername4_bad_return_code -verifier_sock_addr/getpeername6_bad_return_code -verifier_sock_addr/getpeername_unix_bad_return_code -verifier_sock_addr/getsockname4_bad_return_code -verifier_sock_addr/getsockname6_bad_return_code -verifier_sock_addr/getsockname_unix_unix_bad_return_code -verifier_sock_addr/recvmsg4_bad_return_code -verifier_sock_addr/recvmsg6_bad_return_code -verifier_sock_addr/recvmsg_unix_bad_return_code -verifier_sock_addr/sendmsg4_bad_return_code -verifier_sock_addr/sendmsg6_bad_return_code -verifier_sock_addr/sendmsg_unix_bad_return_code -verifier_sockmap_mutate/test_flow_dissector_update -verifier_sockmap_mutate/test_raw_tp_delete -verifier_sockmap_mutate/test_raw_tp_update -verifier_sockmap_mutate/test_sockops_update -verifier_spill_fill/_6_offset_to_skb_data -verifier_spill_fill/addr_offset_to_skb_data -verifier_spill_fill/check_corrupted_spill_fill -verifier_spill_fill/fill_32bit_after_spill_64bit_clear_id -verifier_spill_fill/spill_16bit_of_32bit_fail -verifier_spill_fill/spill_32bit_of_64bit_fail -verifier_spill_fill/u64_offset_to_skb_data -verifier_spill_fill/with_invalid_reg_offset_0 -verifier_spin_lock/call_within_a_locked_region -verifier_spin_lock/lock_test2_direct_ld_st -verifier_spin_lock/lock_test3_direct_ld_st -verifier_spin_lock/lock_test4_direct_ld_st -verifier_spin_lock/lock_test7_unlock_without_lock -verifier_spin_lock/reg_id_for_map_value -verifier_spin_lock/spin_lock_test6_missing_unlock -verifier_spin_lock/spin_lock_test8_double_lock -verifier_spin_lock/spin_lock_test9_different_lock -verifier_spin_lock/test11_ld_abs_under_lock -verifier_stack_ptr/load_bad_alignment_on_off -verifier_stack_ptr/load_bad_alignment_on_reg -verifier_stack_ptr/load_out_of_bounds_high -verifier_stack_ptr/load_out_of_bounds_low -verifier_stack_ptr/to_stack_check_high_4 -verifier_stack_ptr/to_stack_check_high_5 -verifier_stack_ptr/to_stack_check_high_6 -verifier_stack_ptr/to_stack_check_high_7 -verifier_stack_ptr/to_stack_check_low_3 -verifier_stack_ptr/to_stack_check_low_4 -verifier_stack_ptr/to_stack_check_low_5 -verifier_stack_ptr/to_stack_check_low_6 -verifier_stack_ptr/to_stack_check_low_7 -verifier_subprog_precision/callback_precise_return_fail +verifier_arena/check_arena_arg_ret +verifier_array_access/valid multiple map access into an array using constant without nullness +verifier_iterating_callbacks/test1 +verifier_lsm/not null checking nullable pointer in bpf_lsm_mmap_file +verifier_map_in_map/map_ptr_is_never_null_rb +verifier_map_lookup_refine/mapofmaps_value_as_helper_fixed_mem +verifier_map_lookup_refine/mapofmaps_value_as_helper_mem_buf +verifier_map_lookup_refine/mapofmaps_value_as_kfunc_mem_buf +verifier_private_stack/Private stack, async callback, not nested +verifier_private_stack/Private stack, async callback, potential nesting +verifier_private_stack/private stack, max stack depth is private stack +verifier_sockmap_mutate/test_trace_iter +verifier_spill_fill/partial_stack_load_preserves_zeros +verifier_spill_fill/stack_load_preserves_const_precision +verifier_spill_fill/stack_load_preserves_const_precision_subreg +verifier_subprog_precision/callback_result_precise +verifier_subprog_precision/fp_precise_subprog_result +verifier_subprog_precision/global_subprog_result_precise +verifier_subprog_precision/parent_callee_saved_reg_precise +verifier_subprog_precision/parent_callee_saved_reg_precise_global +verifier_subprog_precision/parent_callee_saved_reg_precise_with_callback +verifier_subprog_precision/parent_stack_slot_precise +verifier_subprog_precision/parent_stack_slot_precise_global +verifier_subprog_precision/parent_stack_slot_precise_with_callback +verifier_subprog_precision/sneaky_fp_precise_subprog_result +verifier_subprog_precision/stack_slot_aliases_precision +verifier_subprog_precision/subprog_arg_precise +verifier_subprog_precision/subprog_result_precise +verifier_subprog_precision/subprog_result_tail_call +verifier_subprog_precision/subprog_spill_into_parent_stack_slot_precise verifier_tailcall_jit -verifier_uninit -verifier_unpriv -verifier_unpriv_perf -verifier_value/store_of_cleared_call_register -verifier_value_illegal_alu -verifier_value_or_null/map_access_from_else_condition -verifier_value_or_null/map_value_or_null_1 -verifier_value_or_null/map_value_or_null_2 -verifier_value_or_null/map_value_or_null_3 -verifier_value_or_null/multiple_map_lookup_elem_calls -verifier_value_or_null/null_check_ids_in_regsafe -verifier_value_ptr_arith/access_known_scalar_value_ptr_2 -verifier_value_ptr_arith/access_unknown_scalar_value_ptr -verifier_value_ptr_arith/access_value_ptr_known_scalar -verifier_value_ptr_arith/access_value_ptr_unknown_scalar -verifier_value_ptr_arith/access_value_ptr_value_ptr_1 -verifier_value_ptr_arith/access_value_ptr_value_ptr_2 -verifier_value_ptr_arith/lower_oob_arith_test_1 -verifier_value_ptr_arith/to_leak_tainted_dst_reg -verifier_value_ptr_arith/unknown_scalar_value_ptr_4 -verifier_value_ptr_arith/value_ptr_known_scalar_2_1 -verifier_value_ptr_arith/value_ptr_known_scalar_3 -verifier_var_off/access_max_out_of_bound -verifier_var_off/access_min_out_of_bound -verifier_var_off/stack_write_clobbers_spilled_regs -verifier_var_off/variable_offset_ctx_access -verifier_var_off/variable_offset_stack_access_unbounded -verifier_var_off/zero_sized_access_max_out_of_bound -verifier_vfs_reject -verifier_xadd/xadd_w_check_unaligned_map -verifier_xadd/xadd_w_check_unaligned_pkt -verifier_xadd/xadd_w_check_unaligned_stack -verifier_xdp_direct_packet_access/corner_case_1_bad_access_1 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_10 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_11 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_12 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_13 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_14 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_15 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_16 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_2 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_3 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_4 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_5 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_6 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_7 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_8 -verifier_xdp_direct_packet_access/corner_case_1_bad_access_9 -verifier_xdp_direct_packet_access/end_mangling_bad_access_1 -verifier_xdp_direct_packet_access/end_mangling_bad_access_2 -verifier_xdp_direct_packet_access/pkt_data_bad_access_1_1 -verifier_xdp_direct_packet_access/pkt_data_bad_access_1_2 -verifier_xdp_direct_packet_access/pkt_data_bad_access_1_3 -verifier_xdp_direct_packet_access/pkt_data_bad_access_1_4 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_1 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_2 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_3 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_4 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_5 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_6 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_7 -verifier_xdp_direct_packet_access/pkt_data_bad_access_2_8 -verifier_xdp_direct_packet_access/pkt_end_bad_access_1_1 -verifier_xdp_direct_packet_access/pkt_end_bad_access_1_2 -verifier_xdp_direct_packet_access/pkt_end_bad_access_2_1 -verifier_xdp_direct_packet_access/pkt_end_bad_access_2_2 -verifier_xdp_direct_packet_access/pkt_end_bad_access_2_3 -verifier_xdp_direct_packet_access/pkt_end_bad_access_2_4 -verifier_xdp_direct_packet_access/pkt_meta_bad_access_1_1 -verifier_xdp_direct_packet_access/pkt_meta_bad_access_1_2 -verifier_xdp_direct_packet_access/pkt_meta_bad_access_2_1 -verifier_xdp_direct_packet_access/pkt_meta_bad_access_2_2 -verifier_xdp_direct_packet_access/pkt_meta_bad_access_2_3 -verifier_xdp_direct_packet_access/pkt_meta_bad_access_2_4 verify_pkcs7_sig +veristat/set_global_vars_from_file_succeeds +veristat/set_global_vars_succeeds +xdp_context_lwt_encap +xdp_context_tuntap +xdp_context_veth +xdp_pull_data xdp_synproxy From 618bc846d6e0ed202f5d1065578b074743dbcedc Mon Sep 17 00:00:00 2001 From: Vineet Gupta Date: Thu, 13 Aug 2026 16:31:42 -0700 Subject: [PATCH 2/2] gcc-bpf: run the selftests instead of only building them The GCC BPF workflow compiles test_progs-bpf_gcc and then throws it away, so it only ever checked that the selftests still build with GCC. Nothing runs them: the runner was disabled in f7504ae97157 ("Disable test_progs-bpf_gcc") because too many tests were failing with GCC 15, and it has stayed off since. As evident in previous patch to denylist, GCC 16 is in much better shape, still fails a fair number of selftests, but few enough that the remainder is worth running rather than leaving untested. Split the workflow into a build job and a test job, in the same shape as test-progs-asan.yml. The build job keeps doing what it did and now packages test_progs-bpf_gcc as an artifact; the test job unpacks it over the selftests directory from the main build and runs it under vmtest. Keeping this in its own workflow rather than folding the GCC BPF build into kernel-build.yml is deliberate. Every test and veristat job depends on the root build job, so a break in the GCC BPF compiler download, in the scripts, or in the GCC selftests build would take out the whole matrix leg and the artifact it produces. Here it can only fail the GCC BPF jobs. The test job needs /dev/kvm, so kernel-build-test.yml now passes the test runners; the build job continues to pick its own builder image. Drop the commented out matrix.py entry that used to run test_progs-bpf_gcc. The tests run again, just not through the test matrix, so the note saying they are disabled is now actively misleading. Gate the test job on run_tests, the same flag the matrix test job uses, so that push events keep building test_progs-bpf_gcc without occupying a test runner to run it. Signed-off-by: Vineet Gupta --- .github/scripts/matrix.py | 5 -- .github/workflows/gcc-bpf.yml | 85 ++++++++++++++++++++++++- .github/workflows/kernel-build-test.yml | 6 +- 3 files changed, 87 insertions(+), 9 deletions(-) diff --git a/.github/scripts/matrix.py b/.github/scripts/matrix.py index dd25c290..826a2f60 100644 --- a/.github/scripts/matrix.py +++ b/.github/scripts/matrix.py @@ -188,11 +188,6 @@ def tests(self) -> Dict[str, Any]: # if self.arch in [Arch.X86_64, Arch.AARCH64] and not self.is_netdev: # tests_list.append("sched_ext") - # Don't run GCC BPF runner, because too many tests are failing - # See: https://lore.kernel.org/bpf/87bjw6qpje.fsf@oracle.com/ - # if self.arch == Arch.X86_64: - # tests_list.append("test_progs-bpf_gcc") - if not self.parallel_tests: tests_list = [test for test in tests_list if not test.endswith("parallel")] diff --git a/.github/workflows/gcc-bpf.yml b/.github/workflows/gcc-bpf.yml index e7c816bb..175cabe8 100644 --- a/.github/workflows/gcc-bpf.yml +++ b/.github/workflows/gcc-bpf.yml @@ -24,15 +24,20 @@ on: download_sources: required: true type: boolean + run_tests: + required: true + type: boolean + description: Whether or not to run the test job. jobs: - test: - name: GCC BPF + build: + name: GCC BPF build runs-on: - ${{ format('codebuild-bpf-ci-{0}-{1}', github.run_id, github.run_attempt) }} - image:custom-linux-ghcr.io/kernel-patches/runner:kbuilder-debian-x86_64 env: ARCH: ${{ inputs.arch }} + ARTIFACTS_ARCHIVE: ${{ github.workspace }}/selftests-bpf-gcc-${{ inputs.arch }}-${{ inputs.toolchain_full }}.tar.zst BPF_NEXT_BASE_BRANCH: 'master' GCC_BPF_INSTALL_DIR: ${{ github.workspace }}/gcc-bpf GCC_BPF_RELEASE_REPO: 'theihor/gcc-bpf' @@ -98,3 +103,79 @@ jobs: kernel-root: ${{ env.REPO_ROOT }} llvm-version: ${{ inputs.llvm_version }} toolchain: ${{ inputs.toolchain }} + + - name: Tar artifacts + uses: libbpf/ci/tar-artifacts@v4 + env: + ARCHIVE_BPF_SELFTESTS: 'true' + ARCHIVE_KBUILD_OUTPUT: '' # emptystring means false + with: + arch: ${{ inputs.arch }} + archive: ${{ env.ARTIFACTS_ARCHIVE }} + kbuild-output: ${{ env.KBUILD_OUTPUT }} + repo-root: ${{ env.REPO_ROOT }} + + - uses: actions/upload-artifact@v7 + with: + name: selftests-bpf-gcc-${{ inputs.arch }}-${{ inputs.toolchain_full }} + if-no-files-found: error + path: ${{ env.ARTIFACTS_ARCHIVE }} + + test: + name: GCC BPF + if: ${{ inputs.run_tests }} + runs-on: ${{ fromJSON(inputs.runs_on) }} + needs: [build] + timeout-minutes: 100 + env: + ARCH: ${{ inputs.arch }} + REPO_ROOT: ${{ github.workspace }} + REPO_PATH: "" + DEPLOYMENT: ${{ github.repository == 'kernel-patches/bpf' && 'prod' || 'rc' }} + KERNEL_TEST: test_progs-bpf_gcc + ALLOWLIST_FILE: /tmp/allowlist + DENYLIST_FILE: /tmp/denylist + steps: + - uses: actions/checkout@v6 + with: + sparse-checkout: | + .github + ci + + - uses: actions/download-artifact@v7 + with: + name: vmlinux-${{ inputs.arch }}-${{ inputs.toolchain_full }} + path: ${{ env.REPO_ROOT }} + + - name: Untar vmlinux + working-directory: ${{ env.REPO_ROOT }} + run: zstd -d -T0 vmlinux-${{ inputs.arch }}-${{ inputs.toolchain_full }}.tar.zst --stdout | tar -xf - + + # Overlays test_progs-bpf_gcc onto the selftests directory unpacked above. + - uses: actions/download-artifact@v7 + with: + name: selftests-bpf-gcc-${{ inputs.arch }}-${{ inputs.toolchain_full }} + path: ${{ env.REPO_ROOT }} + + - name: Untar test_progs-bpf_gcc + working-directory: ${{ env.REPO_ROOT }} + run: zstd -d -T0 selftests-bpf-gcc-${{ inputs.arch }}-${{ inputs.toolchain_full }}.tar.zst --stdout | tar -xf - + + - name: Run selftests + uses: libbpf/ci/run-vmtest@v4 + env: + ARCH: ${{ inputs.arch }} + DEPLOYMENT: ${{ env.DEPLOYMENT }} + LLVM_VERSION: ${{ inputs.llvm_version }} + SELFTESTS_BPF: ${{ github.workspace }}/selftests/bpf + VMTEST_CONFIGS: ${{ github.workspace }}/ci/vmtest/configs + VMTEST_MEMORY: 5G + VMTEST_NUM_CPUS: 4 + TEST_PROGS_WATCHDOG_TIMEOUT: 600 + with: + arch: ${{ inputs.arch }} + vmlinuz: '${{ github.workspace }}/vmlinuz' + kernel-root: ${{ env.REPO_ROOT }} + max-cpu: 8 + kernel-test: ${{ env.KERNEL_TEST }} + kbuild-output: ${{ env.REPO_ROOT }}/kbuild-output diff --git a/.github/workflows/kernel-build-test.yml b/.github/workflows/kernel-build-test.yml index 87416c70..99abd1b9 100644 --- a/.github/workflows/kernel-build-test.yml +++ b/.github/workflows/kernel-build-test.yml @@ -188,11 +188,13 @@ jobs: uses: ./.github/workflows/gcc-bpf.yml needs: [build] with: - # GCC BPF does not need /dev/kvm, so use the "build" runners - runs_on: ${{ inputs.build_runs_on }} + # The tests run in a VM, so these must be the /dev/kvm capable runners. + # The build half of the workflow picks its own runner. + runs_on: ${{ inputs.runs_on }} arch: ${{ inputs.arch }} gcc_version: ${{ inputs.gcc_version }} llvm_version: ${{ inputs.llvm_version }} toolchain: ${{ inputs.toolchain }} toolchain_full: ${{ inputs.toolchain_full }} download_sources: ${{ inputs.download_sources }} + run_tests: ${{ inputs.run_tests }}