Attach like 'kprobe/bpf_fentry_test6+0x5' will fail to attach when CONFIG_X86_KERNEL_IBT option is enabled because of the endbr instruction at the function entry. We would need to do manual attach with offset calculation based on the CONFIG_X86_KERNEL_IBT option, which does not seem worth the effort to me. Disabling these test when CONFIG_X86_KERNEL_IBT is enabled. Signed-off-by: Jiri Olsa <jolsa@xxxxxxxxxx> --- .../bpf/prog_tests/get_func_ip_test.c | 25 +++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c b/tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c index 938dbd4d7c2f..cb0b78fb29df 100644 --- a/tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c +++ b/tools/testing/selftests/bpf/prog_tests/get_func_ip_test.c @@ -2,6 +2,24 @@ #include <test_progs.h> #include "get_func_ip_test.skel.h" +/* assume IBT is enabled when kernel configs are not available */ +#ifdef HAVE_GENHDR +# include "autoconf.h" +#else +# define CONFIG_X86_KERNEL_IBT 1 +#endif + +/* test6 and test7 are x86_64 specific because of the instruction + * offset, disabling it for all other archs + * + * CONFIG_X86_KERNEL_IBT adds endbr instruction at function entry, + * so disabling test6 and test7, because the offset is hardcoded + * in program section + */ +#if !defined(__x86_64__) || defined(CONFIG_X86_KERNEL_IBT) +#define DISABLE_OFFSET_ATTACH 1 +#endif + void test_get_func_ip_test(void) { struct get_func_ip_test *skel = NULL; @@ -12,10 +30,7 @@ void test_get_func_ip_test(void) if (!ASSERT_OK_PTR(skel, "get_func_ip_test__open")) return; - /* test6 is x86_64 specifc because of the instruction - * offset, disabling it for all other archs - */ -#ifndef __x86_64__ +#if defined(DISABLE_OFFSET_ATTACH) bpf_program__set_autoload(skel->progs.test6, false); bpf_program__set_autoload(skel->progs.test7, false); #endif @@ -43,7 +58,7 @@ void test_get_func_ip_test(void) ASSERT_EQ(skel->bss->test3_result, 1, "test3_result"); ASSERT_EQ(skel->bss->test4_result, 1, "test4_result"); ASSERT_EQ(skel->bss->test5_result, 1, "test5_result"); -#ifdef __x86_64__ +#if !defined(DISABLE_OFFSET_ATTACH) ASSERT_EQ(skel->bss->test6_result, 1, "test6_result"); ASSERT_EQ(skel->bss->test7_result, 1, "test7_result"); #endif -- 2.35.3