tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   002322402dafd846c424ffa9240a937f49b48c42
commit: 017794739702d444ca48115ff0fcdce19edb5559 dmaengine: ti: k3-udma: 
Initial support for K3 BCDMA
config: arm64-randconfig-m031-20210325 (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 <l...@intel.com>
Reported-by: Dan Carpenter <dan.carpen...@oracle.com>

New smatch warnings:
drivers/dma/ti/k3-udma.c:4236 bcdma_setup_resources() error: 'rm_res' 
dereferencing possible ERR_PTR()

Old smatch warnings:
drivers/dma/ti/k3-udma.c:4113 udma_setup_resources() error: 'rm_res' 
dereferencing possible ERR_PTR()
drivers/dma/ti/k3-udma.c:4126 udma_setup_resources() error: 'rm_res' 
dereferencing possible ERR_PTR()
drivers/dma/ti/k3-udma.c:4251 bcdma_setup_resources() error: 'rm_res' 
dereferencing possible ERR_PTR()
drivers/dma/ti/k3-udma.c:4266 bcdma_setup_resources() error: 'rm_res' 
dereferencing possible ERR_PTR()

vim +/rm_res +4236 drivers/dma/ti/k3-udma.c

017794739702d4 Peter Ujfalusi 2020-12-08  4170  static int 
bcdma_setup_resources(struct udma_dev *ud)
017794739702d4 Peter Ujfalusi 2020-12-08  4171  {
017794739702d4 Peter Ujfalusi 2020-12-08  4172          int ret, i, j;
017794739702d4 Peter Ujfalusi 2020-12-08  4173          struct device *dev = 
ud->dev;
017794739702d4 Peter Ujfalusi 2020-12-08  4174          struct ti_sci_resource 
*rm_res, irq_res;
017794739702d4 Peter Ujfalusi 2020-12-08  4175          struct udma_tisci_rm 
*tisci_rm = &ud->tisci_rm;
017794739702d4 Peter Ujfalusi 2020-12-08  4176          const struct 
udma_oes_offsets *oes = &ud->soc_data->oes;
017794739702d4 Peter Ujfalusi 2020-12-08  4177  
017794739702d4 Peter Ujfalusi 2020-12-08  4178          ud->bchan_map = 
devm_kmalloc_array(dev, BITS_TO_LONGS(ud->bchan_cnt),
017794739702d4 Peter Ujfalusi 2020-12-08  4179                                  
           sizeof(unsigned long), GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4180          ud->bchans = 
devm_kcalloc(dev, ud->bchan_cnt, sizeof(*ud->bchans),
017794739702d4 Peter Ujfalusi 2020-12-08  4181                                  
  GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4182          ud->tchan_map = 
devm_kmalloc_array(dev, BITS_TO_LONGS(ud->tchan_cnt),
017794739702d4 Peter Ujfalusi 2020-12-08  4183                                  
           sizeof(unsigned long), GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4184          ud->tchans = 
devm_kcalloc(dev, ud->tchan_cnt, sizeof(*ud->tchans),
017794739702d4 Peter Ujfalusi 2020-12-08  4185                                  
  GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4186          ud->rchan_map = 
devm_kmalloc_array(dev, BITS_TO_LONGS(ud->rchan_cnt),
017794739702d4 Peter Ujfalusi 2020-12-08  4187                                  
           sizeof(unsigned long), GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4188          ud->rchans = 
devm_kcalloc(dev, ud->rchan_cnt, sizeof(*ud->rchans),
017794739702d4 Peter Ujfalusi 2020-12-08  4189                                  
  GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4190          /* BCDMA do not really 
have flows, but the driver expect it */
017794739702d4 Peter Ujfalusi 2020-12-08  4191          ud->rflow_in_use = 
devm_kcalloc(dev, BITS_TO_LONGS(ud->rchan_cnt),
017794739702d4 Peter Ujfalusi 2020-12-08  4192                                  
        sizeof(unsigned long),
017794739702d4 Peter Ujfalusi 2020-12-08  4193                                  
        GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4194          ud->rflows = 
devm_kcalloc(dev, ud->rchan_cnt, sizeof(*ud->rflows),
017794739702d4 Peter Ujfalusi 2020-12-08  4195                                  
  GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4196  
017794739702d4 Peter Ujfalusi 2020-12-08  4197          if (!ud->bchan_map || 
!ud->tchan_map || !ud->rchan_map ||
017794739702d4 Peter Ujfalusi 2020-12-08  4198              !ud->rflow_in_use 
|| !ud->bchans || !ud->tchans || !ud->rchans ||
017794739702d4 Peter Ujfalusi 2020-12-08  4199              !ud->rflows)
017794739702d4 Peter Ujfalusi 2020-12-08  4200                  return -ENOMEM;
017794739702d4 Peter Ujfalusi 2020-12-08  4201  
017794739702d4 Peter Ujfalusi 2020-12-08  4202          /* TPL is not yet 
supported for BCDMA */
017794739702d4 Peter Ujfalusi 2020-12-08  4203          ud->tpl_levels = 1;
017794739702d4 Peter Ujfalusi 2020-12-08  4204  
017794739702d4 Peter Ujfalusi 2020-12-08  4205          /* Get resource ranges 
from tisci */
017794739702d4 Peter Ujfalusi 2020-12-08  4206          for (i = 0; i < 
RM_RANGE_LAST; i++) {
017794739702d4 Peter Ujfalusi 2020-12-08  4207                  if (i == 
RM_RANGE_RFLOW)
017794739702d4 Peter Ujfalusi 2020-12-08  4208                          
continue;
017794739702d4 Peter Ujfalusi 2020-12-08  4209                  if (i == 
RM_RANGE_BCHAN && ud->bchan_cnt == 0)
017794739702d4 Peter Ujfalusi 2020-12-08  4210                          
continue;
017794739702d4 Peter Ujfalusi 2020-12-08  4211                  if (i == 
RM_RANGE_TCHAN && ud->tchan_cnt == 0)
017794739702d4 Peter Ujfalusi 2020-12-08  4212                          
continue;
017794739702d4 Peter Ujfalusi 2020-12-08  4213                  if (i == 
RM_RANGE_RCHAN && ud->rchan_cnt == 0)
017794739702d4 Peter Ujfalusi 2020-12-08  4214                          
continue;
017794739702d4 Peter Ujfalusi 2020-12-08  4215  
017794739702d4 Peter Ujfalusi 2020-12-08  4216                  
tisci_rm->rm_ranges[i] =
017794739702d4 Peter Ujfalusi 2020-12-08  4217                          
devm_ti_sci_get_of_resource(tisci_rm->tisci, dev,
017794739702d4 Peter Ujfalusi 2020-12-08  4218                                  
                    tisci_rm->tisci_dev_id,
017794739702d4 Peter Ujfalusi 2020-12-08  4219                                  
                    (char *)range_names[i]);
017794739702d4 Peter Ujfalusi 2020-12-08  4220          }
017794739702d4 Peter Ujfalusi 2020-12-08  4221  
017794739702d4 Peter Ujfalusi 2020-12-08  4222          irq_res.sets = 0;
017794739702d4 Peter Ujfalusi 2020-12-08  4223  
017794739702d4 Peter Ujfalusi 2020-12-08  4224          /* bchan ranges */
017794739702d4 Peter Ujfalusi 2020-12-08  4225          if (ud->bchan_cnt) {
017794739702d4 Peter Ujfalusi 2020-12-08  4226                  rm_res = 
tisci_rm->rm_ranges[RM_RANGE_BCHAN];
017794739702d4 Peter Ujfalusi 2020-12-08  4227                  if 
(IS_ERR(rm_res)) {
                                                                           
^^^^^^
This is an error pointer

017794739702d4 Peter Ujfalusi 2020-12-08  4228                          
bitmap_zero(ud->bchan_map, ud->bchan_cnt);
017794739702d4 Peter Ujfalusi 2020-12-08  4229                  } else {
017794739702d4 Peter Ujfalusi 2020-12-08  4230                          
bitmap_fill(ud->bchan_map, ud->bchan_cnt);
017794739702d4 Peter Ujfalusi 2020-12-08  4231                          for (i 
= 0; i < rm_res->sets; i++)
017794739702d4 Peter Ujfalusi 2020-12-08  4232                                  
udma_mark_resource_ranges(ud, ud->bchan_map,
017794739702d4 Peter Ujfalusi 2020-12-08  4233                                  
                          &rm_res->desc[i],
017794739702d4 Peter Ujfalusi 2020-12-08  4234                                  
                          "bchan");
017794739702d4 Peter Ujfalusi 2020-12-08  4235                  }
017794739702d4 Peter Ujfalusi 2020-12-08 @4236                  irq_res.sets += 
rm_res->sets;
                                                                                
^^^^^^^^^^^^
Boom.  dereference.

017794739702d4 Peter Ujfalusi 2020-12-08  4237          }
017794739702d4 Peter Ujfalusi 2020-12-08  4238  
017794739702d4 Peter Ujfalusi 2020-12-08  4239          /* tchan ranges */
017794739702d4 Peter Ujfalusi 2020-12-08  4240          if (ud->tchan_cnt) {
017794739702d4 Peter Ujfalusi 2020-12-08  4241                  rm_res = 
tisci_rm->rm_ranges[RM_RANGE_TCHAN];
017794739702d4 Peter Ujfalusi 2020-12-08  4242                  if 
(IS_ERR(rm_res)) {
017794739702d4 Peter Ujfalusi 2020-12-08  4243                          
bitmap_zero(ud->tchan_map, ud->tchan_cnt);
017794739702d4 Peter Ujfalusi 2020-12-08  4244                  } else {
017794739702d4 Peter Ujfalusi 2020-12-08  4245                          
bitmap_fill(ud->tchan_map, ud->tchan_cnt);
017794739702d4 Peter Ujfalusi 2020-12-08  4246                          for (i 
= 0; i < rm_res->sets; i++)
017794739702d4 Peter Ujfalusi 2020-12-08  4247                                  
udma_mark_resource_ranges(ud, ud->tchan_map,
017794739702d4 Peter Ujfalusi 2020-12-08  4248                                  
                          &rm_res->desc[i],
017794739702d4 Peter Ujfalusi 2020-12-08  4249                                  
                          "tchan");
017794739702d4 Peter Ujfalusi 2020-12-08  4250                  }
017794739702d4 Peter Ujfalusi 2020-12-08  4251                  irq_res.sets += 
rm_res->sets * 2;
                                                                                
^^^^^^^^^^^^

017794739702d4 Peter Ujfalusi 2020-12-08  4252          }
017794739702d4 Peter Ujfalusi 2020-12-08  4253  
017794739702d4 Peter Ujfalusi 2020-12-08  4254          /* rchan ranges */
017794739702d4 Peter Ujfalusi 2020-12-08  4255          if (ud->rchan_cnt) {
017794739702d4 Peter Ujfalusi 2020-12-08  4256                  rm_res = 
tisci_rm->rm_ranges[RM_RANGE_RCHAN];
017794739702d4 Peter Ujfalusi 2020-12-08  4257                  if 
(IS_ERR(rm_res)) {
017794739702d4 Peter Ujfalusi 2020-12-08  4258                          
bitmap_zero(ud->rchan_map, ud->rchan_cnt);
017794739702d4 Peter Ujfalusi 2020-12-08  4259                  } else {
017794739702d4 Peter Ujfalusi 2020-12-08  4260                          
bitmap_fill(ud->rchan_map, ud->rchan_cnt);
017794739702d4 Peter Ujfalusi 2020-12-08  4261                          for (i 
= 0; i < rm_res->sets; i++)
017794739702d4 Peter Ujfalusi 2020-12-08  4262                                  
udma_mark_resource_ranges(ud, ud->rchan_map,
017794739702d4 Peter Ujfalusi 2020-12-08  4263                                  
                          &rm_res->desc[i],
017794739702d4 Peter Ujfalusi 2020-12-08  4264                                  
                          "rchan");
017794739702d4 Peter Ujfalusi 2020-12-08  4265                  }
017794739702d4 Peter Ujfalusi 2020-12-08  4266                  irq_res.sets += 
rm_res->sets * 2;
017794739702d4 Peter Ujfalusi 2020-12-08  4267          }
017794739702d4 Peter Ujfalusi 2020-12-08  4268  
017794739702d4 Peter Ujfalusi 2020-12-08  4269          irq_res.desc = 
kcalloc(irq_res.sets, sizeof(*irq_res.desc), GFP_KERNEL);
017794739702d4 Peter Ujfalusi 2020-12-08  4270          if (ud->bchan_cnt) {
017794739702d4 Peter Ujfalusi 2020-12-08  4271                  rm_res = 
tisci_rm->rm_ranges[RM_RANGE_BCHAN];
017794739702d4 Peter Ujfalusi 2020-12-08  4272                  for (i = 0; i < 
rm_res->sets; i++) {
017794739702d4 Peter Ujfalusi 2020-12-08  4273                          
irq_res.desc[i].start = rm_res->desc[i].start +
017794739702d4 Peter Ujfalusi 2020-12-08  4274                                  
                oes->bcdma_bchan_ring;
017794739702d4 Peter Ujfalusi 2020-12-08  4275                          
irq_res.desc[i].num = rm_res->desc[i].num;
017794739702d4 Peter Ujfalusi 2020-12-08  4276                  }
017794739702d4 Peter Ujfalusi 2020-12-08  4277          }
017794739702d4 Peter Ujfalusi 2020-12-08  4278          if (ud->tchan_cnt) {
017794739702d4 Peter Ujfalusi 2020-12-08  4279                  rm_res = 
tisci_rm->rm_ranges[RM_RANGE_TCHAN];
017794739702d4 Peter Ujfalusi 2020-12-08  4280                  for (j = 0; j < 
rm_res->sets; j++, i += 2) {
017794739702d4 Peter Ujfalusi 2020-12-08  4281                          
irq_res.desc[i].start = rm_res->desc[j].start +
017794739702d4 Peter Ujfalusi 2020-12-08  4282                                  
                oes->bcdma_tchan_data;
017794739702d4 Peter Ujfalusi 2020-12-08  4283                          
irq_res.desc[i].num = rm_res->desc[j].num;
017794739702d4 Peter Ujfalusi 2020-12-08  4284  
017794739702d4 Peter Ujfalusi 2020-12-08  4285                          
irq_res.desc[i + 1].start = rm_res->desc[j].start +
017794739702d4 Peter Ujfalusi 2020-12-08  4286                                  
                oes->bcdma_tchan_ring;
017794739702d4 Peter Ujfalusi 2020-12-08  4287                          
irq_res.desc[i + 1].num = rm_res->desc[j].num;
017794739702d4 Peter Ujfalusi 2020-12-08  4288                  }
017794739702d4 Peter Ujfalusi 2020-12-08  4289          }
017794739702d4 Peter Ujfalusi 2020-12-08  4290          if (ud->rchan_cnt) {
017794739702d4 Peter Ujfalusi 2020-12-08  4291                  rm_res = 
tisci_rm->rm_ranges[RM_RANGE_RCHAN];
017794739702d4 Peter Ujfalusi 2020-12-08  4292                  for (j = 0; j < 
rm_res->sets; j++, i += 2) {
017794739702d4 Peter Ujfalusi 2020-12-08  4293                          
irq_res.desc[i].start = rm_res->desc[j].start +
017794739702d4 Peter Ujfalusi 2020-12-08  4294                                  
                oes->bcdma_rchan_data;
017794739702d4 Peter Ujfalusi 2020-12-08  4295                          
irq_res.desc[i].num = rm_res->desc[j].num;
017794739702d4 Peter Ujfalusi 2020-12-08  4296  
017794739702d4 Peter Ujfalusi 2020-12-08  4297                          
irq_res.desc[i + 1].start = rm_res->desc[j].start +
017794739702d4 Peter Ujfalusi 2020-12-08  4298                                  
                oes->bcdma_rchan_ring;
017794739702d4 Peter Ujfalusi 2020-12-08  4299                          
irq_res.desc[i + 1].num = rm_res->desc[j].num;
017794739702d4 Peter Ujfalusi 2020-12-08  4300                  }
017794739702d4 Peter Ujfalusi 2020-12-08  4301          }
017794739702d4 Peter Ujfalusi 2020-12-08  4302  
017794739702d4 Peter Ujfalusi 2020-12-08  4303          ret = 
ti_sci_inta_msi_domain_alloc_irqs(ud->dev, &irq_res);
017794739702d4 Peter Ujfalusi 2020-12-08  4304          kfree(irq_res.desc);
017794739702d4 Peter Ujfalusi 2020-12-08  4305          if (ret) {
017794739702d4 Peter Ujfalusi 2020-12-08  4306                  
dev_err(ud->dev, "Failed to allocate MSI interrupts\n");
017794739702d4 Peter Ujfalusi 2020-12-08  4307                  return ret;
017794739702d4 Peter Ujfalusi 2020-12-08  4308          }
017794739702d4 Peter Ujfalusi 2020-12-08  4309  
017794739702d4 Peter Ujfalusi 2020-12-08  4310          return 0;
017794739702d4 Peter Ujfalusi 2020-12-08  4311  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org

Attachment: .config.gz
Description: application/gzip

Reply via email to