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:   5c1ee569660d4a205dced9cb4d0306b907fb7599
commit: b24abcff918a5cbf44b0c982bd3477a93e8e4911 bpf, kconfig: Add consolidated 
menu entry for bpf with core options
date:   10 months ago
:::::: branch date: 21 hours ago
:::::: commit date: 10 months ago
config: arm-randconfig-m031-20220223 
(https://download.01.org/0day-ci/archive/20220224/[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

85d33df357b634 Martin KaFai Lau 2020-01-08  113  
85d33df357b634 Martin KaFai Lau 2020-01-08  114         module_id = 
btf_find_by_name_kind(btf, "module", BTF_KIND_STRUCT);
85d33df357b634 Martin KaFai Lau 2020-01-08  115         if (module_id < 0) {
85d33df357b634 Martin KaFai Lau 2020-01-08  116                 pr_warn("Cannot 
find struct module in btf_vmlinux\n");
85d33df357b634 Martin KaFai Lau 2020-01-08  117                 return;
85d33df357b634 Martin KaFai Lau 2020-01-08  118         }
85d33df357b634 Martin KaFai Lau 2020-01-08  119         module_type = 
btf_type_by_id(btf, module_id);
85d33df357b634 Martin KaFai Lau 2020-01-08  120  
27ae7997a66174 Martin KaFai Lau 2020-01-08 @121         for (i = 0; i < 
ARRAY_SIZE(bpf_struct_ops); i++) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  122                 st_ops = 
bpf_struct_ops[i];
27ae7997a66174 Martin KaFai Lau 2020-01-08  123  
85d33df357b634 Martin KaFai Lau 2020-01-08  124                 if 
(strlen(st_ops->name) + VALUE_PREFIX_LEN >=
85d33df357b634 Martin KaFai Lau 2020-01-08  125                     
sizeof(value_name)) {
85d33df357b634 Martin KaFai Lau 2020-01-08  126                         
pr_warn("struct_ops name %s is too long\n",
85d33df357b634 Martin KaFai Lau 2020-01-08  127                                 
st_ops->name);
85d33df357b634 Martin KaFai Lau 2020-01-08  128                         
continue;
85d33df357b634 Martin KaFai Lau 2020-01-08  129                 }
85d33df357b634 Martin KaFai Lau 2020-01-08  130                 
sprintf(value_name, "%s%s", VALUE_PREFIX, st_ops->name);
85d33df357b634 Martin KaFai Lau 2020-01-08  131  
85d33df357b634 Martin KaFai Lau 2020-01-08  132                 value_id = 
btf_find_by_name_kind(btf, value_name,
85d33df357b634 Martin KaFai Lau 2020-01-08  133                                 
                 BTF_KIND_STRUCT);
85d33df357b634 Martin KaFai Lau 2020-01-08  134                 if (value_id < 
0) {
85d33df357b634 Martin KaFai Lau 2020-01-08  135                         
pr_warn("Cannot find struct %s in btf_vmlinux\n",
85d33df357b634 Martin KaFai Lau 2020-01-08  136                                 
value_name);
85d33df357b634 Martin KaFai Lau 2020-01-08  137                         
continue;
85d33df357b634 Martin KaFai Lau 2020-01-08  138                 }
85d33df357b634 Martin KaFai Lau 2020-01-08  139  
27ae7997a66174 Martin KaFai Lau 2020-01-08  140                 type_id = 
btf_find_by_name_kind(btf, st_ops->name,
27ae7997a66174 Martin KaFai Lau 2020-01-08  141                                 
                BTF_KIND_STRUCT);
27ae7997a66174 Martin KaFai Lau 2020-01-08  142                 if (type_id < 
0) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  143                         
pr_warn("Cannot find struct %s in btf_vmlinux\n",
27ae7997a66174 Martin KaFai Lau 2020-01-08  144                                 
st_ops->name);
27ae7997a66174 Martin KaFai Lau 2020-01-08  145                         
continue;
27ae7997a66174 Martin KaFai Lau 2020-01-08  146                 }
27ae7997a66174 Martin KaFai Lau 2020-01-08  147                 t = 
btf_type_by_id(btf, type_id);
27ae7997a66174 Martin KaFai Lau 2020-01-08  148                 if 
(btf_type_vlen(t) > BPF_STRUCT_OPS_MAX_NR_MEMBERS) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  149                         
pr_warn("Cannot support #%u members in struct %s\n",
27ae7997a66174 Martin KaFai Lau 2020-01-08  150                                 
btf_type_vlen(t), st_ops->name);
27ae7997a66174 Martin KaFai Lau 2020-01-08  151                         
continue;
27ae7997a66174 Martin KaFai Lau 2020-01-08  152                 }
27ae7997a66174 Martin KaFai Lau 2020-01-08  153  
27ae7997a66174 Martin KaFai Lau 2020-01-08  154                 
for_each_member(j, t, member) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  155                         const 
struct btf_type *func_proto;
27ae7997a66174 Martin KaFai Lau 2020-01-08  156  
27ae7997a66174 Martin KaFai Lau 2020-01-08  157                         mname = 
btf_name_by_offset(btf, member->name_off);
27ae7997a66174 Martin KaFai Lau 2020-01-08  158                         if 
(!*mname) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  159                                 
pr_warn("anon member in struct %s is not supported\n",
27ae7997a66174 Martin KaFai Lau 2020-01-08  160                                 
        st_ops->name);
27ae7997a66174 Martin KaFai Lau 2020-01-08  161                                 
break;
27ae7997a66174 Martin KaFai Lau 2020-01-08  162                         }
27ae7997a66174 Martin KaFai Lau 2020-01-08  163  
27ae7997a66174 Martin KaFai Lau 2020-01-08  164                         if 
(btf_member_bitfield_size(t, member)) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  165                                 
pr_warn("bit field member %s in struct %s is not supported\n",
27ae7997a66174 Martin KaFai Lau 2020-01-08  166                                 
        mname, st_ops->name);
27ae7997a66174 Martin KaFai Lau 2020-01-08  167                                 
break;
27ae7997a66174 Martin KaFai Lau 2020-01-08  168                         }
27ae7997a66174 Martin KaFai Lau 2020-01-08  169  
27ae7997a66174 Martin KaFai Lau 2020-01-08  170                         
func_proto = btf_type_resolve_func_ptr(btf,
27ae7997a66174 Martin KaFai Lau 2020-01-08  171                                 
                               member->type,
27ae7997a66174 Martin KaFai Lau 2020-01-08  172                                 
                               NULL);
27ae7997a66174 Martin KaFai Lau 2020-01-08  173                         if 
(func_proto &&
d3e42bb0a329fa Martin KaFai Lau 2020-01-27  174                             
btf_distill_func_proto(log, btf,
27ae7997a66174 Martin KaFai Lau 2020-01-08  175                                 
                   func_proto, mname,
27ae7997a66174 Martin KaFai Lau 2020-01-08  176                                 
                   &st_ops->func_models[j])) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  177                                 
pr_warn("Error in parsing func ptr %s in struct %s\n",
27ae7997a66174 Martin KaFai Lau 2020-01-08  178                                 
        mname, st_ops->name);
27ae7997a66174 Martin KaFai Lau 2020-01-08  179                                 
break;
27ae7997a66174 Martin KaFai Lau 2020-01-08  180                         }
27ae7997a66174 Martin KaFai Lau 2020-01-08  181                 }
27ae7997a66174 Martin KaFai Lau 2020-01-08  182  
27ae7997a66174 Martin KaFai Lau 2020-01-08  183                 if (j == 
btf_type_vlen(t)) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  184                         if 
(st_ops->init(btf)) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  185                                 
pr_warn("Error in init bpf_struct_ops %s\n",
27ae7997a66174 Martin KaFai Lau 2020-01-08  186                                 
        st_ops->name);
27ae7997a66174 Martin KaFai Lau 2020-01-08  187                         } else {
27ae7997a66174 Martin KaFai Lau 2020-01-08  188                                 
st_ops->type_id = type_id;
27ae7997a66174 Martin KaFai Lau 2020-01-08  189                                 
st_ops->type = t;
85d33df357b634 Martin KaFai Lau 2020-01-08  190                                 
st_ops->value_id = value_id;
85d33df357b634 Martin KaFai Lau 2020-01-08  191                                 
st_ops->value_type = btf_type_by_id(btf,
85d33df357b634 Martin KaFai Lau 2020-01-08  192                                 
                                    value_id);
27ae7997a66174 Martin KaFai Lau 2020-01-08  193                         }
27ae7997a66174 Martin KaFai Lau 2020-01-08  194                 }
27ae7997a66174 Martin KaFai Lau 2020-01-08  195         }
27ae7997a66174 Martin KaFai Lau 2020-01-08  196  }
27ae7997a66174 Martin KaFai Lau 2020-01-08  197  
27ae7997a66174 Martin KaFai Lau 2020-01-08  198  extern struct btf *btf_vmlinux;
27ae7997a66174 Martin KaFai Lau 2020-01-08  199  
85d33df357b634 Martin KaFai Lau 2020-01-08  200  static const struct 
bpf_struct_ops *
85d33df357b634 Martin KaFai Lau 2020-01-08  201  bpf_struct_ops_find_value(u32 
value_id)
85d33df357b634 Martin KaFai Lau 2020-01-08  202  {
85d33df357b634 Martin KaFai Lau 2020-01-08  203         unsigned int i;
85d33df357b634 Martin KaFai Lau 2020-01-08  204  
85d33df357b634 Martin KaFai Lau 2020-01-08  205         if (!value_id || 
!btf_vmlinux)
85d33df357b634 Martin KaFai Lau 2020-01-08  206                 return NULL;
85d33df357b634 Martin KaFai Lau 2020-01-08  207  
85d33df357b634 Martin KaFai Lau 2020-01-08 @208         for (i = 0; i < 
ARRAY_SIZE(bpf_struct_ops); i++) {
85d33df357b634 Martin KaFai Lau 2020-01-08  209                 if 
(bpf_struct_ops[i]->value_id == value_id)
85d33df357b634 Martin KaFai Lau 2020-01-08  210                         return 
bpf_struct_ops[i];
85d33df357b634 Martin KaFai Lau 2020-01-08  211         }
85d33df357b634 Martin KaFai Lau 2020-01-08  212  
85d33df357b634 Martin KaFai Lau 2020-01-08  213         return NULL;
85d33df357b634 Martin KaFai Lau 2020-01-08  214  }
85d33df357b634 Martin KaFai Lau 2020-01-08  215  
27ae7997a66174 Martin KaFai Lau 2020-01-08  216  const struct bpf_struct_ops 
*bpf_struct_ops_find(u32 type_id)
27ae7997a66174 Martin KaFai Lau 2020-01-08  217  {
27ae7997a66174 Martin KaFai Lau 2020-01-08  218         unsigned int i;
27ae7997a66174 Martin KaFai Lau 2020-01-08  219  
27ae7997a66174 Martin KaFai Lau 2020-01-08  220         if (!type_id || 
!btf_vmlinux)
27ae7997a66174 Martin KaFai Lau 2020-01-08  221                 return NULL;
27ae7997a66174 Martin KaFai Lau 2020-01-08  222  
27ae7997a66174 Martin KaFai Lau 2020-01-08 @223         for (i = 0; i < 
ARRAY_SIZE(bpf_struct_ops); i++) {
27ae7997a66174 Martin KaFai Lau 2020-01-08  224                 if 
(bpf_struct_ops[i]->type_id == type_id)
27ae7997a66174 Martin KaFai Lau 2020-01-08  225                         return 
bpf_struct_ops[i];
27ae7997a66174 Martin KaFai Lau 2020-01-08  226         }
27ae7997a66174 Martin KaFai Lau 2020-01-08  227  
27ae7997a66174 Martin KaFai Lau 2020-01-08  228         return NULL;
27ae7997a66174 Martin KaFai Lau 2020-01-08  229  }
85d33df357b634 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, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to