[jolsa-perf:bpf/tramp_29 25/32] kernel/bpf/trampoline.c:948:16: error: implicit declaration of function 'ftrace_hash_alloc'

From: kernel test robot
Date: Mon Jul 11 2022 - 17:42:49 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git bpf/tramp_29
head: ec522c20e55e48f561146afbb81513e20870ee12
commit: f8f16c805972e534643c5a5d23709766f7af22e4 [25/32] bpf: Add support to attach multi trampolines
config: x86_64-randconfig-a006 (https://download.01.org/0day-ci/archive/20220712/202207120532.8OjZqfrT-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=f8f16c805972e534643c5a5d23709766f7af22e4
git remote add jolsa-perf https://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
git fetch --no-tags jolsa-perf bpf/tramp_29
git checkout f8f16c805972e534643c5a5d23709766f7af22e4
# 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:948:16: error: implicit declaration of function 'ftrace_hash_alloc' [-Werror=implicit-function-declaration]
948 | hash = ftrace_hash_alloc(FTRACE_HASH_MAX_BITS);
| ^~~~~~~~~~~~~~~~~
>> kernel/bpf/trampoline.c:948:34: error: 'FTRACE_HASH_MAX_BITS' undeclared (first use in this function)
948 | hash = ftrace_hash_alloc(FTRACE_HASH_MAX_BITS);
| ^~~~~~~~~~~~~~~~~~~~
kernel/bpf/trampoline.c:948:34: note: each undeclared identifier is reported only once for each function it appears in
>> kernel/bpf/trampoline.c:975:33: error: implicit declaration of function 'ftrace_hash_add_entry' [-Werror=implicit-function-declaration]
975 | ftrace_hash_add_entry(hash, entry);
| ^~~~~~~~~~~~~~~~~~~~~
>> kernel/bpf/trampoline.c:989:15: error: implicit declaration of function 'set_ftrace_direct'; did you mean 'modify_ftrace_direct'? [-Werror=implicit-function-declaration]
989 | err = set_ftrace_direct(hash);
| ^~~~~~~~~~~~~~~~~
| modify_ftrace_direct
>> kernel/bpf/trampoline.c:991:9: error: implicit declaration of function 'ftrace_hash_free' [-Werror=implicit-function-declaration]
991 | ftrace_hash_free(hash);
| ^~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors


vim +/ftrace_hash_alloc +948 kernel/bpf/trampoline.c

941
942 static int bpf_tramp_update_set(struct list_head *upd)
943 {
944 struct bpf_trampoline *tr;
945 struct ftrace_hash *hash;
946 int i, err;
947
> 948 hash = ftrace_hash_alloc(FTRACE_HASH_MAX_BITS);
949 if (!hash)
950 return -ENOMEM;
951
952 list_for_each_entry(tr, upd, update.list) {
953 struct ftrace_func_entry *entry;
954 unsigned long direct;
955
956 switch (tr->update.action) {
957 case BPF_TRAMP_UPDATE_REG:
958 case BPF_TRAMP_UPDATE_MODIFY:
959 direct = (unsigned long) tr->update.im->image;
960 break;
961 case BPF_TRAMP_UPDATE_UNREG:
962 direct = 0;
963 break;
964 }
965
966 if (tr->multi.id_multi) {
967 for (i = 0; i < tr->multi.id_multi->cnt; i++) {
968 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
969 if (!entry) {
970 err = -ENOMEM;
971 goto out_free;
972 }
973 entry->ip = (unsigned long) tr->multi.id_multi->addr[i];
974 entry->direct = direct;
> 975 ftrace_hash_add_entry(hash, entry);
976 }
977 } else {
978 entry = kmalloc(sizeof(*entry), GFP_KERNEL);
979 if (!entry) {
980 err = -ENOMEM;
981 goto out_free;
982 }
983 entry->ip = (unsigned long) tr->func.addr;
984 entry->direct = direct;
985 ftrace_hash_add_entry(hash, entry);
986 }
987 }
988
> 989 err = set_ftrace_direct(hash);
990 out_free:
> 991 ftrace_hash_free(hash);
992 return err;
993 }
994

--
0-DAY CI Kernel Test Service
https://01.org/lkp