tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:54:1: warning: no previous prototype for 'bpf_testmod_test_btf_type_tag_percpu_1'

From: kernel test robot
Date: Tue Apr 04 2023 - 00:58:18 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 148341f0a2f53b5e8808d093333d85170586a15d
commit: 50c6b8a9aea2b8dc6c4ffb0cc502b94f7f57a0dc selftests/bpf: Add a test for btf_type_tag "percpu"
date: 1 year, 1 month ago
compiler: gcc-11 (Debian 11.3.0-8) 11.3.0
reproduce:
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=50c6b8a9aea2b8dc6c4ffb0cc502b94f7f57a0dc
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 50c6b8a9aea2b8dc6c4ffb0cc502b94f7f57a0dc
make O=/tmp/kselftest headers
make O=/tmp/kselftest -C tools/testing/selftests

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Link: https://lore.kernel.org/oe-kbuild-all/202304041254.hj58GxCB-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:23:1: warning: no previous prototype for 'bpf_testmod_test_mod_kfunc' [-Wmissing-prototypes]
23 | bpf_testmod_test_mod_kfunc(int i)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:41:1: warning: no previous prototype for 'bpf_testmod_test_btf_type_tag_user_1' [-Wmissing-prototypes]
41 | bpf_testmod_test_btf_type_tag_user_1(struct bpf_testmod_btf_type_tag_1 __user *arg) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:49:1: warning: no previous prototype for 'bpf_testmod_test_btf_type_tag_user_2' [-Wmissing-prototypes]
49 | bpf_testmod_test_btf_type_tag_user_2(struct bpf_testmod_btf_type_tag_2 *arg) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:54:1: warning: no previous prototype for 'bpf_testmod_test_btf_type_tag_percpu_1' [-Wmissing-prototypes]
54 | bpf_testmod_test_btf_type_tag_percpu_1(struct bpf_testmod_btf_type_tag_1 __percpu *arg) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:59:1: warning: no previous prototype for 'bpf_testmod_test_btf_type_tag_percpu_2' [-Wmissing-prototypes]
59 | bpf_testmod_test_btf_type_tag_percpu_2(struct bpf_testmod_btf_type_tag_3 *arg) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:63:14: warning: no previous prototype for 'bpf_testmod_loop_test' [-Wmissing-prototypes]
63 | noinline int bpf_testmod_loop_test(int n)
| ^~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:75:30: warning: no previous prototype for 'bpf_testmod_return_ptr' [-Wmissing-prototypes]
75 | __weak noinline struct file *bpf_testmod_return_ptr(int arg)
| ^~~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:92:1: warning: no previous prototype for 'bpf_testmod_test_read' [-Wmissing-prototypes]
92 | bpf_testmod_test_read(struct file *file, struct kobject *kobj,
| ^~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c:128:1: warning: no previous prototype for 'bpf_testmod_test_write' [-Wmissing-prototypes]
128 | bpf_testmod_test_write(struct file *file, struct kobject *kobj,
| ^~~~~~~~~~~~~~~~~~~~~~
tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.o: warning: objtool: bpf_testmod_return_ptr()+0x15: unreachable instruction


vim +/bpf_testmod_test_btf_type_tag_percpu_1 +54 tools/testing/selftests/bpf/bpf_testmod/bpf_testmod.c

21
22 noinline void
> 23 bpf_testmod_test_mod_kfunc(int i)
24 {
25 *(int *)this_cpu_ptr(&bpf_testmod_ksym_percpu) = i;
26 }
27
28 struct bpf_testmod_btf_type_tag_1 {
29 int a;
30 };
31
32 struct bpf_testmod_btf_type_tag_2 {
33 struct bpf_testmod_btf_type_tag_1 __user *p;
34 };
35
36 struct bpf_testmod_btf_type_tag_3 {
37 struct bpf_testmod_btf_type_tag_1 __percpu *p;
38 };
39
40 noinline int
> 41 bpf_testmod_test_btf_type_tag_user_1(struct bpf_testmod_btf_type_tag_1 __user *arg) {
42 BTF_TYPE_EMIT(func_proto_typedef);
43 BTF_TYPE_EMIT(func_proto_typedef_nested1);
44 BTF_TYPE_EMIT(func_proto_typedef_nested2);
45 return arg->a;
46 }
47
48 noinline int
49 bpf_testmod_test_btf_type_tag_user_2(struct bpf_testmod_btf_type_tag_2 *arg) {
50 return arg->p->a;
51 }
52
53 noinline int
> 54 bpf_testmod_test_btf_type_tag_percpu_1(struct bpf_testmod_btf_type_tag_1 __percpu *arg) {
55 return arg->a;
56 }
57
58 noinline int
> 59 bpf_testmod_test_btf_type_tag_percpu_2(struct bpf_testmod_btf_type_tag_3 *arg) {
60 return arg->p->a;
61 }
62

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests