:::::: 
:::::: Manual check reason: "low confidence static check warning: 
net/core/flow_offload.c:254:26: warning: Parameter 'cb' can be declared with 
const [constParameter]"
:::::: 

CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Baowen Zheng <[email protected]>
CC: Louis Peens <[email protected]>
CC: Simon Horman <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   7a68065eb9cd194cf03f135c9211eeb2d5c4c0a0
commit: 8cbfe939abe905280279e84a297b1cb34e0d0ec9 flow_offload: allow user to 
offload tc action to net device
date:   6 months ago
:::::: branch date: 5 hours ago
:::::: commit date: 6 months ago
compiler: powerpc-linux-gcc (GCC) 11.3.0
reproduce (cppcheck warning):
        # apt-get install cppcheck
        git checkout 8cbfe939abe905280279e84a297b1cb34e0d0ec9
        cppcheck --quiet --enable=style,performance,portability --template=gcc 
FILE

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> net/core/flow_offload.c:254:26: warning: Parameter 'cb' can be declared with 
>> const [constParameter]
           flow_setup_cb_t *cb, void *cb_ident)
                            ^
>> net/core/flow_offload.c:254:36: warning: Parameter 'cb_ident' can be 
>> declared with const [constParameter]
           flow_setup_cb_t *cb, void *cb_ident)
                                      ^
   net/core/flow_offload.c:286:45: warning: Parameter 'cb' can be declared with 
const [constParameter]
   bool flow_block_cb_is_busy(flow_setup_cb_t *cb, void *cb_ident,
                                               ^
   net/core/flow_offload.c:286:55: warning: Parameter 'cb_ident' can be 
declared with const [constParameter]
   bool flow_block_cb_is_busy(flow_setup_cb_t *cb, void *cb_ident,
                                                         ^
>> net/core/flow_offload.c:424:46: warning: Parameter 'release' can be declared 
>> with const [constParameter]
   static void __flow_block_indr_cleanup(void (*release)(void *cb_priv),
                                                ^
>> net/core/flow_offload.c:425:17: warning: Parameter 'cb_priv' can be declared 
>> with const [constParameter]
             void *cb_priv,
                   ^
   net/core/flow_offload.c:447:58: warning: Parameter 'cb' can be declared with 
const [constParameter]
   void flow_indr_dev_unregister(flow_indr_block_bind_cb_t *cb, void *cb_priv,
                                                            ^
>> net/core/flow_offload.c:514:57: warning: Parameter 'data' can be declared 
>> with const [constParameter]
   static struct flow_indir_dev_info *find_indir_dev(void *data)
                                                           ^
>> net/core/flow_offload.c:402:17: warning: Uninitialized variable: 
>> indr_dev->cb [uninitvar]
     if (indr_dev->cb == cb &&
                   ^
>> net/core/flow_offload.c:519:12: warning: Uninitialized variable: cur->data 
>> [uninitvar]
     if (cur->data == data)
              ^

vim +/cb +254 net/core/flow_offload.c

d63db30c8537ba Pablo Neira Ayuso 2019-07-09  252  
14bfb13f0ed525 Pablo Neira Ayuso 2019-07-19  253  struct flow_block_cb 
*flow_block_cb_lookup(struct flow_block *block,
a7323311515d48 Pablo Neira Ayuso 2019-07-19 @254                                
           flow_setup_cb_t *cb, void *cb_ident)
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  255  {
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  256        struct flow_block_cb 
*block_cb;
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  257  
14bfb13f0ed525 Pablo Neira Ayuso 2019-07-19  258        
list_for_each_entry(block_cb, &block->cb_list, list) {
0c7294ddae73ad Pablo Neira Ayuso 2019-07-19  259                if 
(block_cb->cb == cb &&
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  260                    
block_cb->cb_ident == cb_ident)
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  261                        return 
block_cb;
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  262        }
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  263  
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  264        return NULL;
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  265  }
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  266  
EXPORT_SYMBOL(flow_block_cb_lookup);
da3eeb904ff432 Pablo Neira Ayuso 2019-07-09  267  
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  268  void 
*flow_block_cb_priv(struct flow_block_cb *block_cb)
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  269  {
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  270        return 
block_cb->cb_priv;
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  271  }
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  272  
EXPORT_SYMBOL(flow_block_cb_priv);
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  273  
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  274  void 
flow_block_cb_incref(struct flow_block_cb *block_cb)
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  275  {
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  276        block_cb->refcnt++;
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  277  }
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  278  
EXPORT_SYMBOL(flow_block_cb_incref);
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  279  
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  280  unsigned int 
flow_block_cb_decref(struct flow_block_cb *block_cb)
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  281  {
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  282        return 
--block_cb->refcnt;
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  283  }
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  284  
EXPORT_SYMBOL(flow_block_cb_decref);
67bd0d5ea7974d Pablo Neira Ayuso 2019-07-09  285  
a7323311515d48 Pablo Neira Ayuso 2019-07-19  286  bool 
flow_block_cb_is_busy(flow_setup_cb_t *cb, void *cb_ident,
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  287                           
struct list_head *driver_block_list)
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  288  {
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  289        struct flow_block_cb 
*block_cb;
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  290  
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  291        
list_for_each_entry(block_cb, driver_block_list, driver_list) {
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  292                if 
(block_cb->cb == cb &&
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  293                    
block_cb->cb_ident == cb_ident)
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  294                        return 
true;
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  295        }
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  296  
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  297        return false;
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  298  }
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  299  
EXPORT_SYMBOL(flow_block_cb_is_busy);
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  300  
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  301  int 
flow_block_cb_setup_simple(struct flow_block_offload *f,
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  302                               
struct list_head *driver_block_list,
a7323311515d48 Pablo Neira Ayuso 2019-07-19  303                               
flow_setup_cb_t *cb,
a7323311515d48 Pablo Neira Ayuso 2019-07-19  304                               
void *cb_ident, void *cb_priv,
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  305                               
bool ingress_only)
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  306  {
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  307        struct flow_block_cb 
*block_cb;
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  308  
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  309        if (ingress_only &&
32f8c4093ac353 Pablo Neira Ayuso 2019-07-09  310            f->binder_type != 
FLOW_BLOCK_BINDER_TYPE_CLSACT_INGRESS)
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  311                return 
-EOPNOTSUPP;
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  312  
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  313        f->driver_block_list = 
driver_block_list;
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  314  
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  315        switch (f->command) {
9c0e189ec988f3 Pablo Neira Ayuso 2019-07-09  316        case FLOW_BLOCK_BIND:
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  317                if 
(flow_block_cb_is_busy(cb, cb_ident, driver_block_list))
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  318                        return 
-EBUSY;
0d4fd02e7199fb Pablo Neira Ayuso 2019-07-09  319  
0c7294ddae73ad Pablo Neira Ayuso 2019-07-19  320                block_cb = 
flow_block_cb_alloc(cb, cb_ident, cb_priv, NULL);
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  321                if 
(IS_ERR(block_cb))
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  322                        return 
PTR_ERR(block_cb);
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  323  
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  324                
flow_block_cb_add(block_cb, f);
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  325                
list_add_tail(&block_cb->driver_list, driver_block_list);
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  326                return 0;
9c0e189ec988f3 Pablo Neira Ayuso 2019-07-09  327        case FLOW_BLOCK_UNBIND:
14bfb13f0ed525 Pablo Neira Ayuso 2019-07-19  328                block_cb = 
flow_block_cb_lookup(f->block, cb, cb_ident);
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  329                if (!block_cb)
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  330                        return 
-ENOENT;
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  331  
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  332                
flow_block_cb_remove(block_cb, f);
955bcb6ea0df0d Pablo Neira Ayuso 2019-07-09  333                
list_del(&block_cb->driver_list);
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  334                return 0;
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  335        default:
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  336                return 
-EOPNOTSUPP;
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  337        }
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  338  }
4e95bc268b915c Pablo Neira Ayuso 2019-07-09  339  
EXPORT_SYMBOL(flow_block_cb_setup_simple);
4e481908c51bf0 wenxu             2019-08-07  340  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  341  static 
DEFINE_MUTEX(flow_indr_block_lock);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  342  static 
LIST_HEAD(flow_block_indr_list);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  343  static 
LIST_HEAD(flow_block_indr_dev_list);
74fc4f828769cc Eli Cohen         2021-08-17  344  static 
LIST_HEAD(flow_indir_dev_list);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  345  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  346  struct flow_indr_dev {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  347        struct list_head        
        list;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  348        
flow_indr_block_bind_cb_t       *cb;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  349        void                    
        *cb_priv;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  350        refcount_t              
        refcnt;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  351  };
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  352  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  353  static struct flow_indr_dev 
*flow_indr_dev_alloc(flow_indr_block_bind_cb_t *cb,
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  354                                
                 void *cb_priv)
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  355  {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  356        struct flow_indr_dev 
*indr_dev;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  357  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  358        indr_dev = 
kmalloc(sizeof(*indr_dev), GFP_KERNEL);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  359        if (!indr_dev)
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  360                return NULL;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  361  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  362        indr_dev->cb            
= cb;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  363        indr_dev->cb_priv       
= cb_priv;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  364        
refcount_set(&indr_dev->refcnt, 1);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  365  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  366        return indr_dev;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  367  }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  368  
74fc4f828769cc Eli Cohen         2021-08-17  369  struct flow_indir_dev_info {
74fc4f828769cc Eli Cohen         2021-08-17  370        void *data;
74fc4f828769cc Eli Cohen         2021-08-17  371        struct net_device *dev;
74fc4f828769cc Eli Cohen         2021-08-17  372        struct Qdisc *sch;
74fc4f828769cc Eli Cohen         2021-08-17  373        enum tc_setup_type type;
74fc4f828769cc Eli Cohen         2021-08-17  374        void (*cleanup)(struct 
flow_block_cb *block_cb);
74fc4f828769cc Eli Cohen         2021-08-17  375        struct list_head list;
74fc4f828769cc Eli Cohen         2021-08-17  376        enum flow_block_command 
command;
74fc4f828769cc Eli Cohen         2021-08-17  377        enum 
flow_block_binder_type binder_type;
74fc4f828769cc Eli Cohen         2021-08-17  378        struct list_head 
*cb_list;
74fc4f828769cc Eli Cohen         2021-08-17  379  };
74fc4f828769cc Eli Cohen         2021-08-17  380  
74fc4f828769cc Eli Cohen         2021-08-17  381  static void 
existing_qdiscs_register(flow_indr_block_bind_cb_t *cb, void *cb_priv)
74fc4f828769cc Eli Cohen         2021-08-17  382  {
74fc4f828769cc Eli Cohen         2021-08-17  383        struct 
flow_block_offload bo;
74fc4f828769cc Eli Cohen         2021-08-17  384        struct 
flow_indir_dev_info *cur;
74fc4f828769cc Eli Cohen         2021-08-17  385  
74fc4f828769cc Eli Cohen         2021-08-17  386        
list_for_each_entry(cur, &flow_indir_dev_list, list) {
74fc4f828769cc Eli Cohen         2021-08-17  387                memset(&bo, 0, 
sizeof(bo));
74fc4f828769cc Eli Cohen         2021-08-17  388                bo.command = 
cur->command;
74fc4f828769cc Eli Cohen         2021-08-17  389                bo.binder_type 
= cur->binder_type;
74fc4f828769cc Eli Cohen         2021-08-17  390                
INIT_LIST_HEAD(&bo.cb_list);
74fc4f828769cc Eli Cohen         2021-08-17  391                cb(cur->dev, 
cur->sch, cb_priv, cur->type, &bo, cur->data, cur->cleanup);
74fc4f828769cc Eli Cohen         2021-08-17  392                
list_splice(&bo.cb_list, cur->cb_list);
74fc4f828769cc Eli Cohen         2021-08-17  393        }
74fc4f828769cc Eli Cohen         2021-08-17  394  }
74fc4f828769cc Eli Cohen         2021-08-17  395  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  396  int 
flow_indr_dev_register(flow_indr_block_bind_cb_t *cb, void *cb_priv)
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  397  {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  398        struct flow_indr_dev 
*indr_dev;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  399  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  400        
mutex_lock(&flow_indr_block_lock);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  401        
list_for_each_entry(indr_dev, &flow_block_indr_dev_list, list) {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29 @402                if 
(indr_dev->cb == cb &&
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  403                    
indr_dev->cb_priv == cb_priv) {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  404                        
refcount_inc(&indr_dev->refcnt);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  405                        
mutex_unlock(&flow_indr_block_lock);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  406                        return 
0;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  407                }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  408        }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  409  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  410        indr_dev = 
flow_indr_dev_alloc(cb, cb_priv);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  411        if (!indr_dev) {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  412                
mutex_unlock(&flow_indr_block_lock);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  413                return -ENOMEM;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  414        }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  415  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  416        
list_add(&indr_dev->list, &flow_block_indr_dev_list);
74fc4f828769cc Eli Cohen         2021-08-17  417        
existing_qdiscs_register(cb, cb_priv);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  418        
mutex_unlock(&flow_indr_block_lock);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  419  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  420        return 0;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  421  }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  422  
EXPORT_SYMBOL(flow_indr_dev_register);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  423  
a1db217861f33b wenxu             2020-06-18 @424  static void 
__flow_block_indr_cleanup(void (*release)(void *cb_priv),
a1db217861f33b wenxu             2020-06-18 @425                                
      void *cb_priv,
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  426                                
      struct list_head *cleanup_list)
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  427  {
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  428        struct flow_block_cb 
*this, *next;
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  429  
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  430        
list_for_each_entry_safe(this, next, &flow_block_indr_list, indr.list) {
a1db217861f33b wenxu             2020-06-18  431                if 
(this->release == release &&
5137d303659d8c Chris Mi          2020-12-08  432                    
this->indr.cb_priv == cb_priv)
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  433                        
list_move(&this->indr.list, cleanup_list);
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  434        }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  435  }
1fac52da5942c5 Pablo Neira Ayuso 2020-05-29  436  

:::::: The code at line 254 was first introduced by commit
:::::: a7323311515d488b7714bb7504a1d50fabb0bfcf net: flow_offload: rename 
tc_setup_cb_t to flow_setup_cb_t

:::::: TO: Pablo Neira Ayuso <[email protected]>
:::::: CC: David S. Miller <[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