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]
.config.gz
Description: application/gzip
_______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
