1*7987f162SBlaise Boscaccy // SPDX-License-Identifier: GPL-2.0 2*7987f162SBlaise Boscaccy /* Copyright (c) 2025 Microsoft */ 3*7987f162SBlaise Boscaccy #include <test_progs.h> 4*7987f162SBlaise Boscaccy #include "kfunc_call_test.skel.h" 5*7987f162SBlaise Boscaccy #include "kfunc_call_test.lskel.h" 6*7987f162SBlaise Boscaccy #include "test_kernel_flag.skel.h" 7*7987f162SBlaise Boscaccy 8*7987f162SBlaise Boscaccy void test_kernel_flag(void) 9*7987f162SBlaise Boscaccy { 10*7987f162SBlaise Boscaccy struct test_kernel_flag *lsm_skel; 11*7987f162SBlaise Boscaccy struct kfunc_call_test *skel = NULL; 12*7987f162SBlaise Boscaccy struct kfunc_call_test_lskel *lskel = NULL; 13*7987f162SBlaise Boscaccy int ret; 14*7987f162SBlaise Boscaccy 15*7987f162SBlaise Boscaccy lsm_skel = test_kernel_flag__open_and_load(); 16*7987f162SBlaise Boscaccy if (!ASSERT_OK_PTR(lsm_skel, "lsm_skel")) 17*7987f162SBlaise Boscaccy return; 18*7987f162SBlaise Boscaccy 19*7987f162SBlaise Boscaccy lsm_skel->bss->monitored_tid = gettid(); 20*7987f162SBlaise Boscaccy 21*7987f162SBlaise Boscaccy ret = test_kernel_flag__attach(lsm_skel); 22*7987f162SBlaise Boscaccy if (!ASSERT_OK(ret, "test_kernel_flag__attach")) 23*7987f162SBlaise Boscaccy goto close_prog; 24*7987f162SBlaise Boscaccy 25*7987f162SBlaise Boscaccy /* Test with skel. This should pass the gatekeeper */ 26*7987f162SBlaise Boscaccy skel = kfunc_call_test__open_and_load(); 27*7987f162SBlaise Boscaccy if (!ASSERT_OK_PTR(skel, "skel")) 28*7987f162SBlaise Boscaccy goto close_prog; 29*7987f162SBlaise Boscaccy 30*7987f162SBlaise Boscaccy /* Test with lskel. This should fail due to blocking kernel-based bpf() invocations */ 31*7987f162SBlaise Boscaccy lskel = kfunc_call_test_lskel__open_and_load(); 32*7987f162SBlaise Boscaccy if (!ASSERT_ERR_PTR(lskel, "lskel")) 33*7987f162SBlaise Boscaccy goto close_prog; 34*7987f162SBlaise Boscaccy 35*7987f162SBlaise Boscaccy close_prog: 36*7987f162SBlaise Boscaccy if (skel) 37*7987f162SBlaise Boscaccy kfunc_call_test__destroy(skel); 38*7987f162SBlaise Boscaccy if (lskel) 39*7987f162SBlaise Boscaccy kfunc_call_test_lskel__destroy(lskel); 40*7987f162SBlaise Boscaccy 41*7987f162SBlaise Boscaccy lsm_skel->bss->monitored_tid = 0; 42*7987f162SBlaise Boscaccy test_kernel_flag__destroy(lsm_skel); 43*7987f162SBlaise Boscaccy } 44