func_name = prog->sec_name + sec->len;
        opts.retprobe = strcmp(sec->sec, "kretprobe/") == 0;
 
-       n = sscanf(func_name, "%m[a-zA-Z0-9_.]+%lx", &func, &offset);
+       n = sscanf(func_name, "%m[a-zA-Z0-9_.]+%li", &func, &offset);
        if (n < 1) {
                err = -EINVAL;
                pr_warn("kprobe name is invalid: %s\n", func_name);
 
         */
 #ifndef __x86_64__
        bpf_program__set_autoload(skel->progs.test6, false);
+       bpf_program__set_autoload(skel->progs.test7, false);
 #endif
 
        err = get_func_ip_test__load(skel);
        ASSERT_EQ(skel->bss->test5_result, 1, "test5_result");
 #ifdef __x86_64__
        ASSERT_EQ(skel->bss->test6_result, 1, "test6_result");
+       ASSERT_EQ(skel->bss->test7_result, 1, "test7_result");
 #endif
 
 cleanup:
 
 extern const void bpf_fentry_test4 __ksym;
 extern const void bpf_modify_return_test __ksym;
 extern const void bpf_fentry_test6 __ksym;
+extern const void bpf_fentry_test7 __ksym;
 
 __u64 test1_result = 0;
 SEC("fentry/bpf_fentry_test1")
        test6_result = (const void *) addr == &bpf_fentry_test6 + 5;
        return 0;
 }
+
+__u64 test7_result = 0;
+SEC("kprobe/bpf_fentry_test7+5")
+int test7(struct pt_regs *ctx)
+{
+       __u64 addr = bpf_get_func_ip(ctx);
+
+       test7_result = (const void *) addr == &bpf_fentry_test7 + 5;
+       return 0;
+}