From c4c73b3b6e140f05ff74d9670fe29137a4f4f0fd Mon Sep 17 00:00:00 2001 From: Ihor Solodrai Date: Tue, 31 Dec 2024 16:56:46 -0800 Subject: [PATCH] kernel-test: denylist and adjustments for GCC BPF --- .github/workflows/kernel-test.yml | 20 +- build-bpf-gcc/build-and-install.sh | 4 +- .../0599-selftests-bpf-GCC-BPF-build.patch | 40 + ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc | 1073 +++++++++++++++++ ci/vmtest/prepare-selftests-run.sh | 40 + run-vmtest/run-bpf-selftests.sh | 5 + 6 files changed, 1166 insertions(+), 16 deletions(-) create mode 100644 ci/diffs/0599-selftests-bpf-GCC-BPF-build.patch create mode 100644 ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc create mode 100755 ci/vmtest/prepare-selftests-run.sh diff --git a/.github/workflows/kernel-test.yml b/.github/workflows/kernel-test.yml index 53153c2..d4e684e 100644 --- a/.github/workflows/kernel-test.yml +++ b/.github/workflows/kernel-test.yml @@ -60,23 +60,15 @@ jobs: # zstd is installed by default in the runner images. run: zstd -d -T0 vmlinux-${{ inputs.arch }}-${{ inputs.toolchain_full }}.tar.zst --stdout | tar -xf - - - name: Prepare ALLOW/DENYLIST + - name: Prepare to run selftests env: + ARCH: ${{ inputs.arch }} + DEPLOYMENT: ${{ env.DEPLOYMENT }} + KERNEL_TEST: ${{ inputs.test }} SELFTESTS_BPF: ${{ github.workspace }}/selftests/bpf VMTEST_CONFIGS: ${{ github.workspace }}/ci/vmtest/configs - run: | - cat "${SELFTESTS_BPF}/ALLOWLIST" \ - "${SELFTESTS_BPF}/ALLOWLIST.${ARCH}" \ - "${VMTEST_CONFIGS}/ALLOWLIST" \ - "${VMTEST_CONFIGS}/ALLOWLIST.${ARCH}" \ - 2> /dev/null > "${ALLOWLIST_FILE}" || true - - cat "${SELFTESTS_BPF}/DENYLIST" \ - "${SELFTESTS_BPF}/DENYLIST.${ARCH}" \ - "${VMTEST_CONFIGS}/DENYLIST" \ - "${VMTEST_CONFIGS}/DENYLIST.${ARCH}" \ - "${VMTEST_CONFIGS}/DENYLIST.${DEPLOYMENT}" \ - 2> /dev/null > "${DENYLIST_FILE}" || true + shell: bash + run: ${{ github.workspace }}/ci/vmtest/prepare-selftests-run.sh - name: Run selftests uses: ./run-vmtest diff --git a/build-bpf-gcc/build-and-install.sh b/build-bpf-gcc/build-and-install.sh index 24f4021..841be81 100755 --- a/build-bpf-gcc/build-and-install.sh +++ b/build-bpf-gcc/build-and-install.sh @@ -24,7 +24,7 @@ if [ ! -f "${INSTALLDIR}/${BINUTILS_BASENAME}.built" ]; then cd ${BINUTILS_BASENAME}; mkdir build-bpf; cd build-bpf && ../configure --target=bpf-unknown-none --prefix=$INSTALLDIR && make -j $(nproc) && make install && touch ${INSTALLDIR}/${BINUTILS_BASENAME}.built; - ) >> $LOGFILE 2>&1 || { echo -e "\nerror: building $BINUTILS_TARBALL"; exit 1; } + ) 2>&1 | tee -a $LOGFILE || { echo -e "\nerror: building $BINUTILS_TARBALL"; exit 1; } echo done fi @@ -35,7 +35,7 @@ if [ ! -f "${INSTALLDIR}/${GCC_BASENAME}.built" ]; then ./contrib/download_prerequisites mkdir build-bpf; cd build-bpf && ../configure --target=bpf-unknown-none --prefix=$INSTALLDIR && make -j $(nproc) && make install && touch ${INSTALLDIR}/${GCC_BASENAME}.built; - ) >> $LOGFILE 2>&1 || { echo -e "\nerror: building $GCC_TARBALL"; exit 1; } + ) 2>&1 | tee -a $LOGFILE || { echo -e "\nerror: building $GCC_TARBALL"; exit 1; } echo done fi diff --git a/ci/diffs/0599-selftests-bpf-GCC-BPF-build.patch b/ci/diffs/0599-selftests-bpf-GCC-BPF-build.patch new file mode 100644 index 0000000..f31cc8c --- /dev/null +++ b/ci/diffs/0599-selftests-bpf-GCC-BPF-build.patch @@ -0,0 +1,40 @@ +From 1cbbffc89dc42c353031067a49cdc3b912b07321 Mon Sep 17 00:00:00 2001 +From: Ihor Solodrai +Date: Tue, 31 Dec 2024 16:24:43 -0800 +Subject: [PATCH] selftests/bpf: GCC BPF build + +--- + tools/testing/selftests/bpf/Makefile | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile +index 75016962f795..c4f4003a8c2e 100644 +--- a/tools/testing/selftests/bpf/Makefile ++++ b/tools/testing/selftests/bpf/Makefile +@@ -102,6 +102,14 @@ progs/btf_dump_test_case_packing.c-bpf_gcc-CFLAGS := -Wno-error + progs/btf_dump_test_case_padding.c-bpf_gcc-CFLAGS := -Wno-error + progs/btf_dump_test_case_syntax.c-bpf_gcc-CFLAGS := -Wno-error + ++ ++progs/test_cls_redirect.c-CFLAGS := -nostdinc ++progs/test_cls_redirect_dynptr.c-CFLAGS := -nostdinc ++progs/test_cls_redirect_subprogs.c-CFLAGS := -nostdinc ++ ++progs/verifier_bpf_fastcall.c-CFLAGS := -Wno-error ++progs/verifier_search_pruning.c-CFLAGS := -Wno-error ++ + # The following tests do type-punning, via the __imm_insn macro, from + # `struct bpf_insn' to long and then uses the value. This triggers an + # "is used uninitialized" warning in GCC due to strict-aliasing +@@ -502,7 +510,7 @@ endef + # Build BPF object using GCC + define GCC_BPF_BUILD_RULE + $(call msg,GCC-BPF,$4,$2) +- $(Q)$(BPF_GCC) $3 -DBPF_NO_PRESERVE_ACCESS_INDEX -Wno-attributes -O2 -c $1 -o $2 ++ $(Q)$(BPF_GCC) $3 -DBPF_NO_PRESERVE_ACCESS_INDEX -Wno-attributes -O2 -std=gnu17 -c $1 -o $2 + endef + + SKEL_BLACKLIST := btf__% test_pinning_invalid.c test_sk_assign.c +-- +2.47.1 + diff --git a/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc b/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc new file mode 100644 index 0000000..87011e5 --- /dev/null +++ b/ci/vmtest/configs/DENYLIST.test_progs-bpf_gcc @@ -0,0 +1,1073 @@ +arena_htab/arena_htab_asm +async_stack_depth/async_call_root_check +async_stack_depth/pseudo_call_check +bad_struct_ops/invalid_prog_reuse +bpf_cookie +bpf_iter/bpf_hash_map +bpf_iter/ipv6_route +bpf_iter/ksym +bpf_iter_setsockopt +bpf_iter_setsockopt_unix +bpf_iter/tcp4 +bpf_iter/tcp6 +bpf_iter/udp4 +bpf_iter/udp6 +bpf_iter/unix +bpf_mod_race +bpf_nf/tc-bpf-ct +bpf_nf/xdp-ct +bpf_tcp_ca/cubic +btf_dump +btf_map_in_map/diff_size +btf_map_in_map/lookup_update +cb_refs +cgroup_get_current_cgroup_id +cgroup_iter/cgroup_iter__self_only_css_task +cgroup_tcp_skb +cgrp_kfunc/cgrp_kfunc_acquire_fp +cgrp_kfunc/cgrp_kfunc_acquire_no_null_check +cgrp_kfunc/cgrp_kfunc_acquire_null +cgrp_kfunc/cgrp_kfunc_acquire_trusted_walked +cgrp_kfunc/cgrp_kfunc_acquire_unreleased +cgrp_kfunc/cgrp_kfunc_acquire_unsafe_kretprobe +cgrp_kfunc/cgrp_kfunc_acquire_untrusted +cgrp_kfunc/cgrp_kfunc_rcu_get_release +cgrp_kfunc/cgrp_kfunc_release_fp +cgrp_kfunc/cgrp_kfunc_release_null +cgrp_kfunc/cgrp_kfunc_release_unacquired +cgrp_kfunc/cgrp_kfunc_release_untrusted +cgrp_kfunc/cgrp_kfunc_xchg_unreleased +cgrp_kfunc/test_cgrp_acquire_leave_in_map +cgrp_kfunc/test_cgrp_acquire_release_argument +cgrp_kfunc/test_cgrp_from_id +cgrp_kfunc/test_cgrp_get_ancestors +cgrp_kfunc/test_cgrp_get_release +cgrp_kfunc/test_cgrp_xchg_release +cls_redirect/cls_redirect_dynptr +connect_force_port +core_autosize +core_read_macros +core_reloc_btfgen/type_id +core_reloc_btfgen/type_id___missing_targets +core_reloc/type_id +core_reloc/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_firstand_nocpu +cpumask/test_first_firstzero_cpu +cpumask/test_global_mask_array_l2_rcu +cpumask/test_global_mask_array_one_rcu +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_setall_clear_cpu +cpumask/test_set_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 +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 +failures_wq/test_wq_init_nomap +failures_wq/test_wq_init_wrong_map +failures_wq/test_wrong_wq_pointer +failures_wq/test_wrong_wq_pointer_offset +fexit_bpf2bpf +global_func_dead_code +global_map_resize/global_map_resize_bss +global_map_resize/global_map_resize_data +global_map_resize/global_map_resize_invalid +inner_array_lookup +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_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_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/jeq_infer_not_null_ptr_to_btfid +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 +kptr_xchg_inline +l4lb_all +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 +log_buf/obj_load_log_buf +log_fixup/bad_core_relo_subprog +log_fixup/bad_core_relo_trunc_full +lru_bug +map_btf/array_btf +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/marked_as_untrusted_or_null +map_kptr/mark_ref_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 +perf_link +pkt_access +preempted_bpf_ma_op +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 +prog_run_opts +prog_tests_framework +rbtree_fail/rbtree_api_add_bad_cb_bad_fn_call_add +rbtree_fail/rbtree_api_add_bad_cb_bad_fn_call_first_unlock_after +rbtree_fail/rbtree_api_add_bad_cb_bad_fn_call_remove +rbtree_fail/rbtree_api_add_release_unlock_escape +rbtree_fail/rbtree_api_add_to_multiple_trees +rbtree_fail/rbtree_api_first_release_unlock_escape +rbtree_fail/rbtree_api_nolock_add +rbtree_fail/rbtree_api_nolock_first +rbtree_fail/rbtree_api_nolock_remove +rbtree_fail/rbtree_api_remove_no_drop +rbtree_fail/rbtree_api_remove_unadded_node +rbtree_fail/rbtree_api_use_unchecked_remove_retval +rbtree_success/rbtree_add_and_remove +rbtree_success/rbtree_add_and_remove_array +rbtree_success/rbtree_add_nodes +rbtree_success/rbtree_add_nodes_nested +rbtree_success/rbtree_api_release_aliasing +rbtree_success/rbtree_first_and_remove +recursion +refcounted_kptr_fail/rbtree_fail_sleepable_lock_across_rcu +refcounted_kptr_fail/rbtree_refcounted_node_ref_escapes +refcounted_kptr_fail/rbtree_refcounted_node_ref_escapes_owning_input +refcounted_kptr_fail/refcount_acquire_maybe_null +refcounted_kptr/insert_and_remove_lf_tree_false_list_false +refcounted_kptr/insert_and_remove_lf_tree_false_list_true +refcounted_kptr/insert_and_remove_lf_tree_true_list_false +refcounted_kptr/insert_and_remove_lf_tree_true_list_true +refcounted_kptr/insert_and_remove_tree_false_list_false +refcounted_kptr/insert_and_remove_tree_false_list_true +refcounted_kptr/insert_and_remove_tree_true_list_false +refcounted_kptr/insert_and_remove_tree_true_list_true +refcounted_kptr/insert_double___read_from_list_and_del_head +refcounted_kptr/insert_double___read_from_tree_and_del_root +refcounted_kptr/insert_rbtree_and_stash__del_tree_false +refcounted_kptr/insert_rbtree_and_stash__del_tree_true +refcounted_kptr/rbtree_refcounted_node_ref_escapes +refcounted_kptr/rbtree_refcounted_node_ref_escapes_owning_input +refcounted_kptr/rbtree_sleepable_rcu +refcounted_kptr/rbtree_sleepable_rcu_no_explicit_rcu_lock +refcounted_kptr/rbtree_wrong_owner_remove_fail_a1 +refcounted_kptr/rbtree_wrong_owner_remove_fail_a2 +refcounted_kptr/rbtree_wrong_owner_remove_fail_b +refcounted_kptr_wrong_owner +reference_tracking/sk_lookup_success +ringbuf_multi +setget_sockopt +skc_to_unix_sock +sk_lookup +sock_addr +sock_destroy/trace_tcp_destroy_sock +sock_fields +sockmap_listen +spin_lock/lock_global_subprog_call1 +spin_lock/lock_global_subprog_call2 +spin_lock/lock_id_global_zero +spin_lock/lock_id_innermapval_preserve +spin_lock/lock_id_kptr_preserve +spin_lock/lock_id_mapval_preserve +spin_lock/lock_id_mismatch_global_global +spin_lock/lock_id_mismatch_global_innermapval +spin_lock/lock_id_mismatch_global_kptr +spin_lock/lock_id_mismatch_global_mapval +spin_lock/lock_id_mismatch_innermapval_global +spin_lock/lock_id_mismatch_innermapval_innermapval1 +spin_lock/lock_id_mismatch_innermapval_innermapval2 +spin_lock/lock_id_mismatch_innermapval_kptr +spin_lock/lock_id_mismatch_innermapval_mapval +spin_lock/lock_id_mismatch_kptr_global +spin_lock/lock_id_mismatch_kptr_innermapval +spin_lock/lock_id_mismatch_kptr_kptr +spin_lock/lock_id_mismatch_kptr_mapval +spin_lock/lock_id_mismatch_mapval_global +spin_lock/lock_id_mismatch_mapval_innermapval +spin_lock/lock_id_mismatch_mapval_kptr +spin_lock/lock_id_mismatch_mapval_mapval +struct_ops_module/unsupported_ops +syscall/load_prog +syscall/update_outer_map +tailcalls/classifier_0 +tailcalls/classifier_1 +tailcalls/tailcall_6 +tailcalls/tailcall_bpf2bpf_2 +tailcalls/tailcall_bpf2bpf_3 +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_hierarchy_3 +task_kfunc/task_access_comm1 +task_kfunc/task_access_comm2 +task_kfunc/task_access_comm3 +task_kfunc/task_access_comm4 +task_kfunc/task_kfunc_acquire_fp +task_kfunc/task_kfunc_acquire_null +task_kfunc/task_kfunc_acquire_release_no_null_check +task_kfunc/task_kfunc_acquire_trusted_walked +task_kfunc/task_kfunc_acquire_unreleased +task_kfunc/task_kfunc_acquire_unsafe_kretprobe +task_kfunc/task_kfunc_acquire_unsafe_kretprobe_rcu +task_kfunc/task_kfunc_acquire_untrusted +task_kfunc/task_kfunc_from_lsm_task_free +task_kfunc/task_kfunc_from_pid_no_null_check +task_kfunc/task_kfunc_release_fp +task_kfunc/task_kfunc_release_in_map +task_kfunc/task_kfunc_release_null +task_kfunc/task_kfunc_release_unacquired +task_kfunc/task_kfunc_release_untrusted +task_kfunc/task_kfunc_xchg_unreleased +task_kfunc/test_task_acquire_leave_in_map +task_kfunc/test_task_acquire_release_argument +task_kfunc/test_task_acquire_release_current +task_kfunc/test_task_current_acquire_release +task_kfunc/test_task_from_pid_arg +task_kfunc/test_task_from_pid_current +task_kfunc/test_task_from_pid_invalid +task_kfunc/test_task_kfunc_flavor_relo +task_kfunc/test_task_kfunc_flavor_relo_not_found +task_kfunc/test_task_map_acquire_release +task_kfunc/test_task_xchg_release +tc_bpf/tc_bpf_non_root +tcp_custom_syncookie +tcp_hdr_options +tc_redirect/tc_redirect_dtime +test_bpf_ma/batch_alloc_free +test_bpf_ma/batch_percpu_alloc_free +test_bpf_ma/free_through_map_free +test_bpf_ma/percpu_free_through_map_free +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_mim +timer/test_bad_ret +token/btf_token +token/map_token +token/obj_priv_btf_fail +token/obj_priv_btf_success +token/obj_priv_implicit_token +token/obj_priv_implicit_token_envvar +token/obj_priv_map +token/obj_priv_prog +token/prog_token +tp_btf_nullable/handle_tp_btf_nullable_bare1 +tunnel/ip6vxlan_tunnel +tunnel/ipip_tunnel +tunnel/vxlan_tunnel +tunnel/xfrm_tunnel +uprobe_multi_test/consumers +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 +verifier_and/invalid_and_of_negative_number +verifier_and/invalid_range_check +verifier_arena/iter_maps2 +verifier_arena/iter_maps3 +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/a_read_only_array_1_2 +verifier_array_access/a_read_only_array_2_2 +verifier_array_access/array_with_no_floor_check +verifier_array_access/a_write_only_array_1_2 +verifier_array_access/a_write_only_array_2_2 +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/adjacent_field_roundtrip +verifier_bitfield_write/multibyte_field_roundtrip +verifier_bitfield_write/multiple_field_roundtrip +verifier_bitfield_write/single_field_roundtrip +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_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_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_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_or/not_bypass_stack_boundary_checks_1 +verifier_const_or/not_bypass_stack_boundary_checks_2 +verifier_const/tcx1 +verifier_const/tcx4 +verifier_const/tcx7 +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_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/with_32_bit_wraparound_test1 +verifier_direct_stack_access_wraparound/with_32_bit_wraparound_test2 +verifier_direct_stack_access_wraparound/with_32_bit_wraparound_test3 +verifier_d_path/d_path_reject +verifier_global_ptr_args/flavor_ptr_nonnull +verifier_global_ptr_args/flavor_ptr_nullable +verifier_global_ptr_args/trusted_acq_rel +verifier_global_ptr_args/trusted_destroy_fail +verifier_global_ptr_args/trusted_task_arg_nonnull +verifier_global_ptr_args/trusted_task_arg_nonnull_fail1 +verifier_global_ptr_args/trusted_task_arg_nonnull_fail2 +verifier_global_ptr_args/trusted_task_arg_nullable +verifier_global_subprogs/anon_user_mem_invalid +verifier_global_subprogs/anon_user_mem_valid +verifier_global_subprogs/arg_tag_ctx_fentry +verifier_global_subprogs/arg_tag_ctx_fexit +verifier_global_subprogs/arg_tag_ctx_fmod_ret +verifier_global_subprogs/arg_tag_ctx_iter_task +verifier_global_subprogs/arg_tag_ctx_kprobe +verifier_global_subprogs/arg_tag_ctx_lsm +verifier_global_subprogs/arg_tag_ctx_perf +verifier_global_subprogs/arg_tag_ctx_raw_tp +verifier_global_subprogs/arg_tag_ctx_raw_tp_btf +verifier_global_subprogs/arg_tag_ctx_raw_tp_writable +verifier_global_subprogs/arg_tag_ctx_struct_ops +verifier_global_subprogs/arg_tag_ctx_syscall +verifier_global_subprogs/arg_tag_ctx_tp +verifier_global_subprogs/arg_tag_dynptr +verifier_global_subprogs/arg_tag_nonnull_ptr_good +verifier_global_subprogs/arg_tag_nullable_ptr_fail +verifier_global_subprogs/chained_global_func_calls_bad +verifier_global_subprogs/chained_global_func_calls_success +verifier_global_subprogs/guarded_unsupp_global_called +verifier_global_subprogs/unguarded_unsupp_global_called +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/bpf_prog_type_perf_event_1 +verifier_helper_restricted/bpf_prog_type_perf_event_2 +verifier_helper_restricted/bpf_prog_type_perf_event_3 +verifier_helper_restricted/bpf_prog_type_raw_tracepoint_1 +verifier_helper_restricted/bpf_prog_type_raw_tracepoint_2 +verifier_helper_restricted/bpf_prog_type_raw_tracepoint_3 +verifier_helper_restricted/in_bpf_prog_type_kprobe_1 +verifier_helper_restricted/in_bpf_prog_type_kprobe_2 +verifier_helper_restricted/in_bpf_prog_type_kprobe_3 +verifier_helper_restricted/in_bpf_prog_type_tracepoint_1 +verifier_helper_restricted/in_bpf_prog_type_tracepoint_2 +verifier_helper_restricted/in_bpf_prog_type_tracepoint_3 +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/scalars +verifier_loops1 +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_mixing/dummy_prog_24_socket +verifier_map_ptr_mixing/dummy_prog_42_socket +verifier_map_ptr_mixing/dummy_prog_loop1_socket +verifier_map_ptr_mixing/dummy_prog_loop2_socket +verifier_map_ptr_mixing/lookup_hash_map_in_map +verifier_map_ptr_mixing/pointers_for_lookup_hash_array +verifier_map_ptr_mixing/pointers_for_lookup_tail_tail_1 +verifier_map_ptr_mixing/pointers_for_lookup_tail_tail_2 +verifier_map_ptr/read_non_existent_field_rejected +verifier_map_ptr/read_with_negative_offset_rejected +verifier_map_ret_val/access_memory_with_incorrect_alignment_1 +verifier_map_ret_val/access_memory_with_incorrect_alignment_2 +verifier_map_ret_val/check_return_value_before_access +verifier_map_ret_val/map_fd_for_function_call +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_mtu/tc_uninit_mtu +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/map_lookup_in_prog_array +verifier_prevent_map_lookup/map_lookup_in_stack_trace +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/tracepoint_writable_reject_variable_offset +verifier_ref_tracking/_64_bit_access_of_member +verifier_ref_tracking/acquire_release_system_key_reference +verifier_ref_tracking/acquire_release_user_key_reference +verifier_ref_tracking/after_bpf_sk_release_sk +verifier_ref_tracking/after_bpf_sk_release_tp +verifier_ref_tracking/alloc_in_subprog_release_outside +verifier_ref_tracking/alloc_leak_reference_in_subprog +verifier_ref_tracking/and_bpf_tcp_sock_sk +verifier_ref_tracking/and_release_sock_or_null +verifier_ref_tracking/bpf_sk_fullsock_after_release +verifier_ref_tracking/bpf_sk_release_listen_sk +verifier_ref_tracking/bpf_tcp_sock_after_release +verifier_ref_tracking/call_free_reference_in_subprog +verifier_ref_tracking/checked_reference_over_tail_call +verifier_ref_tracking/check_free_in_both_subbranches +verifier_ref_tracking/check_free_in_one_subbranch +verifier_ref_tracking/check_reference_or_tail_call +verifier_ref_tracking/copy_and_zero_potential_references +verifier_ref_tracking/dummy_prog_24_tc +verifier_ref_tracking/dummy_prog_42_tc +verifier_ref_tracking/dummy_prog_loop1_tc +verifier_ref_tracking/ld_abs_while_holding_reference +verifier_ref_tracking/ld_ind_while_holding_reference +verifier_ref_tracking/leak_potential_reference_on_stack +verifier_ref_tracking/possible_reference_over_tail_call +verifier_ref_tracking/potential_reference_on_stack_2 +verifier_ref_tracking/potential_reference_to_sock_common_1 +verifier_ref_tracking/potential_reference_to_sock_common_2 +verifier_ref_tracking/potential_reference_to_system_key +verifier_ref_tracking/potential_reference_to_user_key +verifier_ref_tracking/ptr_leak_into_caller_stack +verifier_ref_tracking/ptr_spill_into_caller_stack +verifier_ref_tracking/reference_in_subprog_and_outside +verifier_ref_tracking/reference_tracking_access_after_release +verifier_ref_tracking/reference_tracking_access_member +verifier_ref_tracking/reference_tracking_allow_ld_abs +verifier_ref_tracking/reference_tracking_allow_ld_ind +verifier_ref_tracking/reference_tracking_leak_potential_reference +verifier_ref_tracking/reference_tracking_release_reference +verifier_ref_tracking/reference_tracking_release_reference_2 +verifier_ref_tracking/reference_tracking_release_reference_twice +verifier_ref_tracking/reference_tracking_write_to_member +verifier_ref_tracking/reference_tracking_zero_potential_reference +verifier_ref_tracking/release_reference_then_tail_call +verifier_ref_tracking/release_reference_to_sock_common +verifier_ref_tracking/release_reference_twice_inside_branch +verifier_ref_tracking/release_with_null_key_pointer +verifier_ref_tracking/sk_fullsock_tp_after_release +verifier_ref_tracking/sk_release_btf_tcp_sock +verifier_ref_tracking/system_key_reference_without_check +verifier_ref_tracking/to_leak_released_ptr_reg +verifier_ref_tracking/to_sock_common_without_check +verifier_ref_tracking/to_tcp_sock_after_release +verifier_ref_tracking/tracking_direct_access_for_lookup +verifier_ref_tracking/tracking_mangle_and_release_sock +verifier_ref_tracking/tracking_release_reference_without_check +verifier_ref_tracking/tracking_valid_pointer_null_comparison +verifier_ref_tracking/tracking_valid_pointer_value_comparison +verifier_ref_tracking/user_key_reference_without_check +verifier_regalloc/regalloc_and_spill_negative +verifier_regalloc/regalloc_negative +verifier_regalloc/regalloc_src_reg_negative +verifier_reg_equal/subreg_equality_2 +verifier_ringbuf/ringbuf_invalid_reservation_offset_1 +verifier_ringbuf/ringbuf_invalid_reservation_offset_2 +verifier_runtime_jit/_0_key_2_first_branch +verifier_runtime_jit/_0_key_2_second_branch +verifier_runtime_jit/_2_key_2_first_branch +verifier_runtime_jit/_2_key_2_second_branch +verifier_runtime_jit/_32bit_index_to_tail_call +verifier_runtime_jit/bounds_different_maps_first_branch +verifier_runtime_jit/bounds_different_maps_second_branch +verifier_runtime_jit/call_within_bounds_key_2 +verifier_runtime_jit/call_within_bounds_no_prog +verifier_runtime_jit/call_within_bounds_prog_loop +verifier_runtime_jit/call_within_bounds_prog_once +verifier_runtime_jit/dummy_prog_24_socket +verifier_runtime_jit/dummy_prog_42_socket +verifier_runtime_jit/dummy_prog_loop1_socket +verifier_runtime_jit/dummy_prog_loop2_socket +verifier_runtime_jit/negative_index_to_tail_call +verifier_runtime_jit/tail_call_out_of_bounds +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_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_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/map_lookup_elem_smap_key +verifier_sock/map_lookup_elem_sockhash_key +verifier_sock/map_lookup_elem_sockmap_key +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_sock/no_null_check_on_ret_1 +verifier_sock/no_null_check_on_ret_2 +verifier_sock/of_bpf_skc_to_helpers +verifier_sock/sk_1_1_value_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/sk_no_skb_sk_check_1 +verifier_sock/sk_no_skb_sk_check_2 +verifier_sock/sk_sk_type_fullsock_field_1 +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_tailcall_jit/main +verifier_uninit/before_exit_in_all_branches +verifier_uninit/read_invalid_register +verifier_uninit/read_uninitialized_register +verifier_uninit/t_init_r0_before_exit +verifier_unpriv/alu32_mov_u32_const +verifier_unpriv/check_that_printk_is_disallowed +verifier_unpriv/cmp_map_pointer_with_zero +verifier_unpriv/different_pointers_stx_leak_sock +verifier_unpriv/dummy_prog_24_socket +verifier_unpriv/dummy_prog_42_socket +verifier_unpriv/dummy_prog_loop1_socket +verifier_unpriv/fill_of_different_pointers_st +verifier_unpriv/fill_of_different_pointers_stx +verifier_unpriv/from_stack_in_small_chunks +verifier_unpriv/mangle_pointer_on_stack_1 +verifier_unpriv/mangle_pointer_on_stack_2 +verifier_unpriv/on_stack_to_helper_function +verifier_unpriv/pass_pointer_to_helper_function +verifier_unpriv/pass_pointer_to_tail_call +verifier_unpriv_perf/fill_of_different_pointers_ldx +verifier_unpriv/pointer_into_map_elem_value +verifier_unpriv/pointers_stx_ctx_and_sock +verifier_unpriv/spill_fill_of_ctx_2 +verifier_unpriv/spill_fill_of_ctx_3 +verifier_unpriv/spill_fill_of_ctx_4 +verifier_unpriv/stx_sock_and_ctx_read +verifier_unpriv/stx_sock_and_ctx_write +verifier_unpriv/unpriv_add_const_to_pointer +verifier_unpriv/unpriv_adding_of_fp_imm +verifier_unpriv/unpriv_adding_of_fp_reg +verifier_unpriv/unpriv_add_pointer_to_pointer +verifier_unpriv/unpriv_cmp_of_frame_pointer +verifier_unpriv/unpriv_cmp_of_stack_pointer +verifier_unpriv/unpriv_cmp_pointer_with_const +verifier_unpriv/unpriv_cmp_pointer_with_pointer +verifier_unpriv/unpriv_neg_pointer +verifier_unpriv/unpriv_partial_copy_of_pointer +verifier_unpriv/unpriv_return_pointer +verifier_unpriv/unpriv_spill_fill_frame_pointer +verifier_unpriv/unpriv_spill_fill_of_ctx +verifier_unpriv/unpriv_write_into_frame_pointer +verifier_unpriv/unpriv_write_pointer_into_ctx +verifier_value_illegal_alu/flow_keys_illegal_variable_offset_alu +verifier_value_illegal_alu/value_illegal_alu_op_1 +verifier_value_illegal_alu/value_illegal_alu_op_2 +verifier_value_illegal_alu/value_illegal_alu_op_3 +verifier_value_illegal_alu/value_illegal_alu_op_4 +verifier_value_illegal_alu/value_illegal_alu_op_5 +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_value/store_of_cleared_call_register +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/get_task_exe_file_kfunc_fp +verifier_vfs_reject/get_task_exe_file_kfunc_null +verifier_vfs_reject/get_task_exe_file_kfunc_unreleased +verifier_vfs_reject/get_task_exe_file_kfunc_untrusted +verifier_vfs_reject/path_d_path_kfunc_invalid_buf_sz +verifier_vfs_reject/path_d_path_kfunc_non_lsm +verifier_vfs_reject/path_d_path_kfunc_null +verifier_vfs_reject/path_d_path_kfunc_type_mismatch +verifier_vfs_reject/path_d_path_kfunc_untrusted_from_argument +verifier_vfs_reject/path_d_path_kfunc_untrusted_from_current +verifier_vfs_reject/put_file_kfunc_unacquired +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 +verif_scale_pyperf100 +verif_scale_pyperf180 +verif_scale_pyperf600 +verif_scale_pyperf600_nounroll +verif_scale_seg6_loop +verif_scale_strobemeta +verif_scale_strobemeta_nounroll1 +verif_scale_strobemeta_nounroll2 +verif_scale_strobemeta_subprogs +verif_scale_sysctl_loop1 +verif_scale_sysctl_loop2 +verif_scale_xdp_loop +verify_pkcs7_sig +xdp_synproxy/tc +xdp_synproxy/xdp diff --git a/ci/vmtest/prepare-selftests-run.sh b/ci/vmtest/prepare-selftests-run.sh new file mode 100755 index 0000000..e4cac59 --- /dev/null +++ b/ci/vmtest/prepare-selftests-run.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +set -euo pipefail + +function append_into() { + local out="$1" + shift + local files=("$@") + echo -n > "$out" + for file in "${files[@]}"; do + if [[ -f "$file" ]]; then + echo "cat $file >> $out" + cat "$file" >> "$out" + fi + done +} + +allowlists=( + "${SELFTESTS_BPF}/ALLOWLIST" + "${SELFTESTS_BPF}/ALLOWLIST.${ARCH}" + "${VMTEST_CONFIGS}/ALLOWLIST" + "${VMTEST_CONFIGS}/ALLOWLIST.${ARCH}" + "${VMTEST_CONFIGS}/ALLOWLIST.${DEPLOYMENT}" + "${VMTEST_CONFIGS}/ALLOWLIST.${KERNEL_TEST}" +) + +append_into "${ALLOWLIST_FILE}" "${allowlists[@]}" + +denylists=( + "${SELFTESTS_BPF}/DENYLIST" + "${SELFTESTS_BPF}/DENYLIST.${ARCH}" + "${VMTEST_CONFIGS}/DENYLIST" + "${VMTEST_CONFIGS}/DENYLIST.${ARCH}" + "${VMTEST_CONFIGS}/DENYLIST.${DEPLOYMENT}" + "${VMTEST_CONFIGS}/DENYLIST.${KERNEL_TEST}" +) + +append_into "${DENYLIST_FILE}" "${denylists[@]}" + +exit 0 diff --git a/run-vmtest/run-bpf-selftests.sh b/run-vmtest/run-bpf-selftests.sh index 8ba6903..ac6503b 100755 --- a/run-vmtest/run-bpf-selftests.sh +++ b/run-vmtest/run-bpf-selftests.sh @@ -85,6 +85,11 @@ test_verifier() { foldable end test_verifier } +test_progs-bpf_gcc() { + echo $(pwd) + test_progs_helper "-bpf_gcc" "" +} + export VERISTAT_CONFIGS=${VERISTAT_CONFIGS:-/mnt/vmtest/ci/vmtest/configs} export WORKING_DIR=$(pwd) # veristat config expects this variable