[jolsa-perf:bpf/tracing_multi_4 23/35] kernel/bpf/trampoline.c:1074:16: error: implicit declaration of function 'ftrace_hash_alloc'
From: kernel test robot
Date: Fri Jul 29 2022 - 10:20:09 EST
tree: https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git bpf/tracing_multi_4
head: a63fc296e166a76b3f7250a966df4651e3a846f1
commit: 8544251d2b26ab91f208df1c72259b909968b9a8 [23/35] bpf: Add support to attach multi trampolines
config: x86_64-randconfig-a006 (https://download.01.org/0day-ci/archive/20220729/202207292200.qt0ol0Ov-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-3) 11.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git/commit/?id=8544251d2b26ab91f208df1c72259b909968b9a8
git remote add jolsa-perf https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
git fetch --no-tags jolsa-perf bpf/tracing_multi_4
git checkout 8544251d2b26ab91f208df1c72259b909968b9a8
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>
All errors (new ones prefixed by >>):
kernel/bpf/trampoline.c: In function 'bpf_tramp_update_set':
>> kernel/bpf/trampoline.c:1074:16: error: implicit declaration of function 'ftrace_hash_alloc' [-Werror=implicit-function-declaration]
1074 | hash = ftrace_hash_alloc(FTRACE_HASH_MAX_BITS);
| ^~~~~~~~~~~~~~~~~
>> kernel/bpf/trampoline.c:1074:34: error: 'FTRACE_HASH_MAX_BITS' undeclared (first use in this function)
1074 | hash = ftrace_hash_alloc(FTRACE_HASH_MAX_BITS);
| ^~~~~~~~~~~~~~~~~~~~
kernel/bpf/trampoline.c:1074:34: note: each undeclared identifier is reported only once for each function it appears in
>> kernel/bpf/trampoline.c:1101:33: error: implicit declaration of function 'ftrace_hash_add_entry' [-Werror=implicit-function-declaration]
1101 | ftrace_hash_add_entry(hash, entry);
| ^~~~~~~~~~~~~~~~~~~~~
kernel/bpf/trampoline.c:1115:15: error: implicit declaration of function 'set_ftrace_direct'; did you mean 'modify_ftrace_direct'? [-Werror=implicit-function-declaration]
1115 | err = set_ftrace_direct(hash);
| ^~~~~~~~~~~~~~~~~
| modify_ftrace_direct
>> kernel/bpf/trampoline.c:1117:9: error: implicit declaration of function 'ftrace_hash_free' [-Werror=implicit-function-declaration]
1117 | ftrace_hash_free(hash);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/ftrace_hash_alloc +1074 kernel/bpf/trampoline.c
1067
1068 static int bpf_tramp_update_set(struct list_head *upd)
1069 {
1070 struct bpf_trampoline *tr;
1071 struct ftrace_hash *hash;
1072 int i, err;
1073
> 1074 hash = ftrace_hash_alloc(FTRACE_HASH_MAX_BITS);
1075 if (!hash)
1076 return -ENOMEM;
1077
1078 list_for_each_entry(tr, upd, update.list) {
1079 struct ftrace_func_entry *entry;
1080 unsigned long direct;
1081
1082 switch (tr->update.action) {
1083 case BPF_TRAMP_UPDATE_REG:
1084 case BPF_TRAMP_UPDATE_MODIFY:
1085 direct = (unsigned long) tr->update.im->image;
1086 break;
1087 case BPF_TRAMP_UPDATE_UNREG:
1088 direct = 0;
1089 break;
1090 }
1091
1092 if (tr->multi.id_multi) {
1093 for (i = 0; i < tr->multi.id_multi->cnt; i++) {
1094 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
1095 if (!entry) {
1096 err = -ENOMEM;
1097 goto out_free;
1098 }
1099 entry->ip = (unsigned long) tr->multi.id_multi->addr[i];
1100 entry->direct = direct;
> 1101 ftrace_hash_add_entry(hash, entry);
1102 }
1103 } else {
1104 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
1105 if (!entry) {
1106 err = -ENOMEM;
1107 goto out_free;
1108 }
1109 entry->ip = (unsigned long) tr->func.addr;
1110 entry->direct = direct;
1111 ftrace_hash_add_entry(hash, entry);
1112 }
1113 }
1114
1115 err = set_ftrace_direct(hash);
1116 out_free:
> 1117 ftrace_hash_free(hash);
1118 return err;
1119 }
1120
--
0-DAY CI Kernel Test Service
https://01.org/lkp