tools/lib/bpf/relo_core.c:1172:5: warning: stack frame size (1040) exceeds limit (1024) in 'bpf_core_calc_relo_insn'

From: kernel test robot
Date: Fri Jul 21 2023 - 22:52:18 EST


Hi Yonghong,

First bad commit (maybe != root cause):

tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: d192f5382581d972c4ae1b4d72e0b59b34cadeb9
commit: 776281652ddcd98bb292335ea3634da341c849b4 libbpf: Permit 64bit relocation value
date: 1 year, 1 month ago
config: riscv-randconfig-r022-20230722 (https://download.01.org/0day-ci/archive/20230722/202307221012.UciyuMNh-lkp@xxxxxxxxx/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce: (https://download.01.org/0day-ci/archive/20230722/202307221012.UciyuMNh-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307221012.UciyuMNh-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> tools/lib/bpf/relo_core.c:1172:5: warning: stack frame size (1040) exceeds limit (1024) in 'bpf_core_calc_relo_insn' [-Wframe-larger-than]
int bpf_core_calc_relo_insn(const char *prog_name,
^
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
error: A dwo section may not contain relocations
fatal error: too many errors emitted, stopping now [-ferror-limit=]
1 warning and 20 errors generated.


vim +/bpf_core_calc_relo_insn +1172 tools/lib/bpf/relo_core.c

b0588390dbcedc Alexei Starovoitov 2021-07-20 1121
b0588390dbcedc Alexei Starovoitov 2021-07-20 1122 /*
adb8fa195efdfa Mauricio Vásquez 2022-02-15 1123 * Calculate CO-RE relocation target result.
b0588390dbcedc Alexei Starovoitov 2021-07-20 1124 *
b0588390dbcedc Alexei Starovoitov 2021-07-20 1125 * The outline and important points of the algorithm:
b0588390dbcedc Alexei Starovoitov 2021-07-20 1126 * 1. For given local type, find corresponding candidate target types.
b0588390dbcedc Alexei Starovoitov 2021-07-20 1127 * Candidate type is a type with the same "essential" name, ignoring
b0588390dbcedc Alexei Starovoitov 2021-07-20 1128 * everything after last triple underscore (___). E.g., `sample`,
b0588390dbcedc Alexei Starovoitov 2021-07-20 1129 * `sample___flavor_one`, `sample___flavor_another_one`, are all candidates
b0588390dbcedc Alexei Starovoitov 2021-07-20 1130 * for each other. Names with triple underscore are referred to as
b0588390dbcedc Alexei Starovoitov 2021-07-20 1131 * "flavors" and are useful, among other things, to allow to
b0588390dbcedc Alexei Starovoitov 2021-07-20 1132 * specify/support incompatible variations of the same kernel struct, which
b0588390dbcedc Alexei Starovoitov 2021-07-20 1133 * might differ between different kernel versions and/or build
b0588390dbcedc Alexei Starovoitov 2021-07-20 1134 * configurations.
b0588390dbcedc Alexei Starovoitov 2021-07-20 1135 *
b0588390dbcedc Alexei Starovoitov 2021-07-20 1136 * N.B. Struct "flavors" could be generated by bpftool's BTF-to-C
b0588390dbcedc Alexei Starovoitov 2021-07-20 1137 * converter, when deduplicated BTF of a kernel still contains more than
b0588390dbcedc Alexei Starovoitov 2021-07-20 1138 * one different types with the same name. In that case, ___2, ___3, etc
b0588390dbcedc Alexei Starovoitov 2021-07-20 1139 * are appended starting from second name conflict. But start flavors are
b0588390dbcedc Alexei Starovoitov 2021-07-20 1140 * also useful to be defined "locally", in BPF program, to extract same
b0588390dbcedc Alexei Starovoitov 2021-07-20 1141 * data from incompatible changes between different kernel
b0588390dbcedc Alexei Starovoitov 2021-07-20 1142 * versions/configurations. For instance, to handle field renames between
b0588390dbcedc Alexei Starovoitov 2021-07-20 1143 * kernel versions, one can use two flavors of the struct name with the
b0588390dbcedc Alexei Starovoitov 2021-07-20 1144 * same common name and use conditional relocations to extract that field,
b0588390dbcedc Alexei Starovoitov 2021-07-20 1145 * depending on target kernel version.
b0588390dbcedc Alexei Starovoitov 2021-07-20 1146 * 2. For each candidate type, try to match local specification to this
b0588390dbcedc Alexei Starovoitov 2021-07-20 1147 * candidate target type. Matching involves finding corresponding
b0588390dbcedc Alexei Starovoitov 2021-07-20 1148 * high-level spec accessors, meaning that all named fields should match,
b0588390dbcedc Alexei Starovoitov 2021-07-20 1149 * as well as all array accesses should be within the actual bounds. Also,
b0588390dbcedc Alexei Starovoitov 2021-07-20 1150 * types should be compatible (see bpf_core_fields_are_compat for details).
b0588390dbcedc Alexei Starovoitov 2021-07-20 1151 * 3. It is supported and expected that there might be multiple flavors
b0588390dbcedc Alexei Starovoitov 2021-07-20 1152 * matching the spec. As long as all the specs resolve to the same set of
b0588390dbcedc Alexei Starovoitov 2021-07-20 1153 * offsets across all candidates, there is no error. If there is any
9bbdfad8a5192c Daniel Müller 2022-06-01 1154 * ambiguity, CO-RE relocation will fail. This is necessary to accommodate
9bbdfad8a5192c Daniel Müller 2022-06-01 1155 * imperfection of BTF deduplication, which can cause slight duplication of
b0588390dbcedc Alexei Starovoitov 2021-07-20 1156 * the same BTF type, if some directly or indirectly referenced (by
b0588390dbcedc Alexei Starovoitov 2021-07-20 1157 * pointer) type gets resolved to different actual types in different
9bbdfad8a5192c Daniel Müller 2022-06-01 1158 * object files. If such a situation occurs, deduplicated BTF will end up
b0588390dbcedc Alexei Starovoitov 2021-07-20 1159 * with two (or more) structurally identical types, which differ only in
b0588390dbcedc Alexei Starovoitov 2021-07-20 1160 * types they refer to through pointer. This should be OK in most cases and
b0588390dbcedc Alexei Starovoitov 2021-07-20 1161 * is not an error.
b0588390dbcedc Alexei Starovoitov 2021-07-20 1162 * 4. Candidate types search is performed by linearly scanning through all
b0588390dbcedc Alexei Starovoitov 2021-07-20 1163 * types in target BTF. It is anticipated that this is overall more
b0588390dbcedc Alexei Starovoitov 2021-07-20 1164 * efficient memory-wise and not significantly worse (if not better)
b0588390dbcedc Alexei Starovoitov 2021-07-20 1165 * CPU-wise compared to prebuilding a map from all local type names to
b0588390dbcedc Alexei Starovoitov 2021-07-20 1166 * a list of candidate type names. It's also sped up by caching resolved
b0588390dbcedc Alexei Starovoitov 2021-07-20 1167 * list of matching candidates per each local "root" type ID, that has at
b0588390dbcedc Alexei Starovoitov 2021-07-20 1168 * least one bpf_core_relo associated with it. This list is shared
b0588390dbcedc Alexei Starovoitov 2021-07-20 1169 * between multiple relocations for the same type ID and is updated as some
b0588390dbcedc Alexei Starovoitov 2021-07-20 1170 * of the candidates are pruned due to structural incompatibility.
b0588390dbcedc Alexei Starovoitov 2021-07-20 1171 */
adb8fa195efdfa Mauricio Vásquez 2022-02-15 @1172 int bpf_core_calc_relo_insn(const char *prog_name,

:::::: The code at line 1172 was first introduced by commit
:::::: adb8fa195efdfaac5852aaac24810b456ce43b04 libbpf: Split bpf_core_apply_relo()

:::::: TO: Mauricio Vásquez <mauricio@xxxxxxxxxx>
:::::: CC: Andrii Nakryiko <andrii@xxxxxxxxxx>

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