CC: [email protected]
CC: [email protected]
TO: Grygorii Strashko <[email protected]>
CC: Santosh Shilimkar <[email protected]>
CC: Peter Ujfalusi <[email protected]>
CC: Tero Kristo <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   b791d1bdf9212d944d749a5c7ff6febdba241771
commit: 3277e8aa2504d97e022ecb9777d784ac1a439d36 soc: ti: k3: add navss ringacc 
driver
date:   5 months ago
:::::: branch date: 8 hours ago
:::::: commit date: 5 months ago
config: arm64-randconfig-m031-20200612 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.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:
drivers/soc/ti/k3-ringacc.c:562 k3_ringacc_ring_cfg() warn: variable 
dereferenced before check 'ring' (see line 559)

# 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3277e8aa2504d97e022ecb9777d784ac1a439d36
git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git remote update linus
git checkout 3277e8aa2504d97e022ecb9777d784ac1a439d36
vim +/ring +562 drivers/soc/ti/k3-ringacc.c

3277e8aa2504d97 Grygorii Strashko 2020-01-15  556  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  557  int 
k3_ringacc_ring_cfg(struct k3_ring *ring, struct k3_ring_cfg *cfg)
3277e8aa2504d97 Grygorii Strashko 2020-01-15  558  {
3277e8aa2504d97 Grygorii Strashko 2020-01-15 @559       struct k3_ringacc 
*ringacc = ring->parent;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  560       int ret = 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  561  
3277e8aa2504d97 Grygorii Strashko 2020-01-15 @562       if (!ring || !cfg)
3277e8aa2504d97 Grygorii Strashko 2020-01-15  563               return -EINVAL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  564       if (cfg->elm_size > 
K3_RINGACC_RING_ELSIZE_256 ||
3277e8aa2504d97 Grygorii Strashko 2020-01-15  565           cfg->mode >= 
K3_RINGACC_RING_MODE_INVALID ||
3277e8aa2504d97 Grygorii Strashko 2020-01-15  566           cfg->size & 
~K3_RINGACC_CFG_RING_SIZE_ELCNT_MASK ||
3277e8aa2504d97 Grygorii Strashko 2020-01-15  567           
!test_bit(ring->ring_id, ringacc->rings_inuse))
3277e8aa2504d97 Grygorii Strashko 2020-01-15  568               return -EINVAL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  569  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  570       if (cfg->mode == 
K3_RINGACC_RING_MODE_MESSAGE &&
3277e8aa2504d97 Grygorii Strashko 2020-01-15  571           ring->proxy_id == 
K3_RINGACC_PROXY_NOT_USED &&
3277e8aa2504d97 Grygorii Strashko 2020-01-15  572           cfg->elm_size > 
K3_RINGACC_RING_ELSIZE_8) {
3277e8aa2504d97 Grygorii Strashko 2020-01-15  573               
dev_err(ringacc->dev,
3277e8aa2504d97 Grygorii Strashko 2020-01-15  574                       
"Message mode must use proxy for %u element size\n",
3277e8aa2504d97 Grygorii Strashko 2020-01-15  575                       4 << 
ring->elm_size);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  576               return -EINVAL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  577       }
3277e8aa2504d97 Grygorii Strashko 2020-01-15  578  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  579       /*
3277e8aa2504d97 Grygorii Strashko 2020-01-15  580        * In case of shared 
ring only the first user (master user) can
3277e8aa2504d97 Grygorii Strashko 2020-01-15  581        * configure the ring. 
The sequence should be by the client:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  582        * ring = 
k3_ringacc_request_ring(ringacc, ring_id, 0); # master user
3277e8aa2504d97 Grygorii Strashko 2020-01-15  583        * 
k3_ringacc_ring_cfg(ring, cfg); # master configuration
3277e8aa2504d97 Grygorii Strashko 2020-01-15  584        * 
k3_ringacc_request_ring(ringacc, ring_id, K3_RING_FLAG_SHARED);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  585        * 
k3_ringacc_request_ring(ringacc, ring_id, K3_RING_FLAG_SHARED);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  586        */
3277e8aa2504d97 Grygorii Strashko 2020-01-15  587       if (ring->use_count != 
1)
3277e8aa2504d97 Grygorii Strashko 2020-01-15  588               return 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  589  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  590       ring->size = cfg->size;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  591       ring->elm_size = 
cfg->elm_size;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  592       ring->mode = cfg->mode;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  593       ring->occ = 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  594       ring->free = 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  595       ring->rindex = 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  596       ring->windex = 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  597  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  598       if (ring->proxy_id != 
K3_RINGACC_PROXY_NOT_USED)
3277e8aa2504d97 Grygorii Strashko 2020-01-15  599               ring->proxy = 
ringacc->proxy_target_base +
3277e8aa2504d97 Grygorii Strashko 2020-01-15  600                             
ring->proxy_id * K3_RINGACC_PROXY_TARGET_STEP;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  601  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  602       switch (ring->mode) {
3277e8aa2504d97 Grygorii Strashko 2020-01-15  603       case 
K3_RINGACC_RING_MODE_RING:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  604               ring->ops = 
&k3_ring_mode_ring_ops;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  605               break;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  606       case 
K3_RINGACC_RING_MODE_MESSAGE:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  607               if (ring->proxy)
3277e8aa2504d97 Grygorii Strashko 2020-01-15  608                       
ring->ops = &k3_ring_mode_proxy_ops;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  609               else
3277e8aa2504d97 Grygorii Strashko 2020-01-15  610                       
ring->ops = &k3_ring_mode_msg_ops;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  611               break;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  612       default:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  613               ring->ops = 
NULL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  614               ret = -EINVAL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  615               goto 
err_free_proxy;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  616       };
3277e8aa2504d97 Grygorii Strashko 2020-01-15  617  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  618       ring->ring_mem_virt = 
dma_alloc_coherent(ringacc->dev,
3277e8aa2504d97 Grygorii Strashko 2020-01-15  619                               
        ring->size * (4 << ring->elm_size),
3277e8aa2504d97 Grygorii Strashko 2020-01-15  620                               
        &ring->ring_mem_dma, GFP_KERNEL);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  621       if 
(!ring->ring_mem_virt) {
3277e8aa2504d97 Grygorii Strashko 2020-01-15  622               
dev_err(ringacc->dev, "Failed to alloc ring mem\n");
3277e8aa2504d97 Grygorii Strashko 2020-01-15  623               ret = -ENOMEM;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  624               goto 
err_free_ops;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  625       }
3277e8aa2504d97 Grygorii Strashko 2020-01-15  626  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  627       ret = 
k3_ringacc_ring_cfg_sci(ring);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  628  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  629       if (ret)
3277e8aa2504d97 Grygorii Strashko 2020-01-15  630               goto 
err_free_mem;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  631  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  632       ring->flags |= 
K3_RING_FLAG_BUSY;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  633       ring->flags |= 
(cfg->flags & K3_RINGACC_RING_SHARED) ?
3277e8aa2504d97 Grygorii Strashko 2020-01-15  634                       
K3_RING_FLAG_SHARED : 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  635  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  636       
k3_ringacc_ring_dump(ring);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  637  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  638       return 0;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  639  
3277e8aa2504d97 Grygorii Strashko 2020-01-15  640  err_free_mem:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  641       
dma_free_coherent(ringacc->dev,
3277e8aa2504d97 Grygorii Strashko 2020-01-15  642                         
ring->size * (4 << ring->elm_size),
3277e8aa2504d97 Grygorii Strashko 2020-01-15  643                         
ring->ring_mem_virt,
3277e8aa2504d97 Grygorii Strashko 2020-01-15  644                         
ring->ring_mem_dma);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  645  err_free_ops:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  646       ring->ops = NULL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  647  err_free_proxy:
3277e8aa2504d97 Grygorii Strashko 2020-01-15  648       ring->proxy = NULL;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  649       return ret;
3277e8aa2504d97 Grygorii Strashko 2020-01-15  650  }
3277e8aa2504d97 Grygorii Strashko 2020-01-15  651  
EXPORT_SYMBOL_GPL(k3_ringacc_ring_cfg);
3277e8aa2504d97 Grygorii Strashko 2020-01-15  652  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to