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]

Reply via email to