CC: [email protected] BCC: [email protected] CC: [email protected] TO: Daniel Borkmann <[email protected]> CC: Alexei Starovoitov <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: d51b1b33c51d147b757f042b4d336603b699f362 commit: b24abcff918a5cbf44b0c982bd3477a93e8e4911 bpf, kconfig: Add consolidated menu entry for bpf with core options date: 11 months ago :::::: branch date: 6 hours ago :::::: commit date: 11 months ago config: arm-randconfig-m031-20220323 (https://download.01.org/0day-ci/archive/20220324/[email protected]/config) compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <[email protected]> Reported-by: Dan Carpenter <[email protected]> smatch warnings: kernel/bpf/bpf_struct_ops.c:121 bpf_struct_ops_init() warn: we never enter this loop kernel/bpf/bpf_struct_ops.c:208 bpf_struct_ops_find_value() warn: we never enter this loop kernel/bpf/bpf_struct_ops.c:223 bpf_struct_ops_find() warn: we never enter this loop vim +121 kernel/bpf/bpf_struct_ops.c 85d33df357b6346 Martin KaFai Lau 2020-01-08 113 85d33df357b6346 Martin KaFai Lau 2020-01-08 114 module_id = btf_find_by_name_kind(btf, "module", BTF_KIND_STRUCT); 85d33df357b6346 Martin KaFai Lau 2020-01-08 115 if (module_id < 0) { 85d33df357b6346 Martin KaFai Lau 2020-01-08 116 pr_warn("Cannot find struct module in btf_vmlinux\n"); 85d33df357b6346 Martin KaFai Lau 2020-01-08 117 return; 85d33df357b6346 Martin KaFai Lau 2020-01-08 118 } 85d33df357b6346 Martin KaFai Lau 2020-01-08 119 module_type = btf_type_by_id(btf, module_id); 85d33df357b6346 Martin KaFai Lau 2020-01-08 120 27ae7997a66174c Martin KaFai Lau 2020-01-08 @121 for (i = 0; i < ARRAY_SIZE(bpf_struct_ops); i++) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 122 st_ops = bpf_struct_ops[i]; 27ae7997a66174c Martin KaFai Lau 2020-01-08 123 85d33df357b6346 Martin KaFai Lau 2020-01-08 124 if (strlen(st_ops->name) + VALUE_PREFIX_LEN >= 85d33df357b6346 Martin KaFai Lau 2020-01-08 125 sizeof(value_name)) { 85d33df357b6346 Martin KaFai Lau 2020-01-08 126 pr_warn("struct_ops name %s is too long\n", 85d33df357b6346 Martin KaFai Lau 2020-01-08 127 st_ops->name); 85d33df357b6346 Martin KaFai Lau 2020-01-08 128 continue; 85d33df357b6346 Martin KaFai Lau 2020-01-08 129 } 85d33df357b6346 Martin KaFai Lau 2020-01-08 130 sprintf(value_name, "%s%s", VALUE_PREFIX, st_ops->name); 85d33df357b6346 Martin KaFai Lau 2020-01-08 131 85d33df357b6346 Martin KaFai Lau 2020-01-08 132 value_id = btf_find_by_name_kind(btf, value_name, 85d33df357b6346 Martin KaFai Lau 2020-01-08 133 BTF_KIND_STRUCT); 85d33df357b6346 Martin KaFai Lau 2020-01-08 134 if (value_id < 0) { 85d33df357b6346 Martin KaFai Lau 2020-01-08 135 pr_warn("Cannot find struct %s in btf_vmlinux\n", 85d33df357b6346 Martin KaFai Lau 2020-01-08 136 value_name); 85d33df357b6346 Martin KaFai Lau 2020-01-08 137 continue; 85d33df357b6346 Martin KaFai Lau 2020-01-08 138 } 85d33df357b6346 Martin KaFai Lau 2020-01-08 139 27ae7997a66174c Martin KaFai Lau 2020-01-08 140 type_id = btf_find_by_name_kind(btf, st_ops->name, 27ae7997a66174c Martin KaFai Lau 2020-01-08 141 BTF_KIND_STRUCT); 27ae7997a66174c Martin KaFai Lau 2020-01-08 142 if (type_id < 0) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 143 pr_warn("Cannot find struct %s in btf_vmlinux\n", 27ae7997a66174c Martin KaFai Lau 2020-01-08 144 st_ops->name); 27ae7997a66174c Martin KaFai Lau 2020-01-08 145 continue; 27ae7997a66174c Martin KaFai Lau 2020-01-08 146 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 147 t = btf_type_by_id(btf, type_id); 27ae7997a66174c Martin KaFai Lau 2020-01-08 148 if (btf_type_vlen(t) > BPF_STRUCT_OPS_MAX_NR_MEMBERS) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 149 pr_warn("Cannot support #%u members in struct %s\n", 27ae7997a66174c Martin KaFai Lau 2020-01-08 150 btf_type_vlen(t), st_ops->name); 27ae7997a66174c Martin KaFai Lau 2020-01-08 151 continue; 27ae7997a66174c Martin KaFai Lau 2020-01-08 152 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 153 27ae7997a66174c Martin KaFai Lau 2020-01-08 154 for_each_member(j, t, member) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 155 const struct btf_type *func_proto; 27ae7997a66174c Martin KaFai Lau 2020-01-08 156 27ae7997a66174c Martin KaFai Lau 2020-01-08 157 mname = btf_name_by_offset(btf, member->name_off); 27ae7997a66174c Martin KaFai Lau 2020-01-08 158 if (!*mname) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 159 pr_warn("anon member in struct %s is not supported\n", 27ae7997a66174c Martin KaFai Lau 2020-01-08 160 st_ops->name); 27ae7997a66174c Martin KaFai Lau 2020-01-08 161 break; 27ae7997a66174c Martin KaFai Lau 2020-01-08 162 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 163 27ae7997a66174c Martin KaFai Lau 2020-01-08 164 if (btf_member_bitfield_size(t, member)) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 165 pr_warn("bit field member %s in struct %s is not supported\n", 27ae7997a66174c Martin KaFai Lau 2020-01-08 166 mname, st_ops->name); 27ae7997a66174c Martin KaFai Lau 2020-01-08 167 break; 27ae7997a66174c Martin KaFai Lau 2020-01-08 168 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 169 27ae7997a66174c Martin KaFai Lau 2020-01-08 170 func_proto = btf_type_resolve_func_ptr(btf, 27ae7997a66174c Martin KaFai Lau 2020-01-08 171 member->type, 27ae7997a66174c Martin KaFai Lau 2020-01-08 172 NULL); 27ae7997a66174c Martin KaFai Lau 2020-01-08 173 if (func_proto && d3e42bb0a329fad Martin KaFai Lau 2020-01-27 174 btf_distill_func_proto(log, btf, 27ae7997a66174c Martin KaFai Lau 2020-01-08 175 func_proto, mname, 27ae7997a66174c Martin KaFai Lau 2020-01-08 176 &st_ops->func_models[j])) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 177 pr_warn("Error in parsing func ptr %s in struct %s\n", 27ae7997a66174c Martin KaFai Lau 2020-01-08 178 mname, st_ops->name); 27ae7997a66174c Martin KaFai Lau 2020-01-08 179 break; 27ae7997a66174c Martin KaFai Lau 2020-01-08 180 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 181 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 182 27ae7997a66174c Martin KaFai Lau 2020-01-08 183 if (j == btf_type_vlen(t)) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 184 if (st_ops->init(btf)) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 185 pr_warn("Error in init bpf_struct_ops %s\n", 27ae7997a66174c Martin KaFai Lau 2020-01-08 186 st_ops->name); 27ae7997a66174c Martin KaFai Lau 2020-01-08 187 } else { 27ae7997a66174c Martin KaFai Lau 2020-01-08 188 st_ops->type_id = type_id; 27ae7997a66174c Martin KaFai Lau 2020-01-08 189 st_ops->type = t; 85d33df357b6346 Martin KaFai Lau 2020-01-08 190 st_ops->value_id = value_id; 85d33df357b6346 Martin KaFai Lau 2020-01-08 191 st_ops->value_type = btf_type_by_id(btf, 85d33df357b6346 Martin KaFai Lau 2020-01-08 192 value_id); 27ae7997a66174c Martin KaFai Lau 2020-01-08 193 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 194 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 195 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 196 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 197 27ae7997a66174c Martin KaFai Lau 2020-01-08 198 extern struct btf *btf_vmlinux; 27ae7997a66174c Martin KaFai Lau 2020-01-08 199 85d33df357b6346 Martin KaFai Lau 2020-01-08 200 static const struct bpf_struct_ops * 85d33df357b6346 Martin KaFai Lau 2020-01-08 201 bpf_struct_ops_find_value(u32 value_id) 85d33df357b6346 Martin KaFai Lau 2020-01-08 202 { 85d33df357b6346 Martin KaFai Lau 2020-01-08 203 unsigned int i; 85d33df357b6346 Martin KaFai Lau 2020-01-08 204 85d33df357b6346 Martin KaFai Lau 2020-01-08 205 if (!value_id || !btf_vmlinux) 85d33df357b6346 Martin KaFai Lau 2020-01-08 206 return NULL; 85d33df357b6346 Martin KaFai Lau 2020-01-08 207 85d33df357b6346 Martin KaFai Lau 2020-01-08 @208 for (i = 0; i < ARRAY_SIZE(bpf_struct_ops); i++) { 85d33df357b6346 Martin KaFai Lau 2020-01-08 209 if (bpf_struct_ops[i]->value_id == value_id) 85d33df357b6346 Martin KaFai Lau 2020-01-08 210 return bpf_struct_ops[i]; 85d33df357b6346 Martin KaFai Lau 2020-01-08 211 } 85d33df357b6346 Martin KaFai Lau 2020-01-08 212 85d33df357b6346 Martin KaFai Lau 2020-01-08 213 return NULL; 85d33df357b6346 Martin KaFai Lau 2020-01-08 214 } 85d33df357b6346 Martin KaFai Lau 2020-01-08 215 27ae7997a66174c Martin KaFai Lau 2020-01-08 216 const struct bpf_struct_ops *bpf_struct_ops_find(u32 type_id) 27ae7997a66174c Martin KaFai Lau 2020-01-08 217 { 27ae7997a66174c Martin KaFai Lau 2020-01-08 218 unsigned int i; 27ae7997a66174c Martin KaFai Lau 2020-01-08 219 27ae7997a66174c Martin KaFai Lau 2020-01-08 220 if (!type_id || !btf_vmlinux) 27ae7997a66174c Martin KaFai Lau 2020-01-08 221 return NULL; 27ae7997a66174c Martin KaFai Lau 2020-01-08 222 27ae7997a66174c Martin KaFai Lau 2020-01-08 @223 for (i = 0; i < ARRAY_SIZE(bpf_struct_ops); i++) { 27ae7997a66174c Martin KaFai Lau 2020-01-08 224 if (bpf_struct_ops[i]->type_id == type_id) 27ae7997a66174c Martin KaFai Lau 2020-01-08 225 return bpf_struct_ops[i]; 27ae7997a66174c Martin KaFai Lau 2020-01-08 226 } 27ae7997a66174c Martin KaFai Lau 2020-01-08 227 27ae7997a66174c Martin KaFai Lau 2020-01-08 228 return NULL; 27ae7997a66174c Martin KaFai Lau 2020-01-08 229 } 85d33df357b6346 Martin KaFai Lau 2020-01-08 230 :::::: The code at line 121 was first introduced by commit :::::: 27ae7997a66174cb8afd6a75b3989f5e0c1b9e5a bpf: Introduce BPF_PROG_TYPE_STRUCT_OPS :::::: TO: Martin KaFai Lau <[email protected]> :::::: CC: Alexei Starovoitov <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
