::::::
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check warning:
drivers/nvme/host/rdma.c:1598:13: warning: use of uninitialized value
'<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]"
::::::
BCC: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Max Gurtovoy <mgurtovoy(a)nvidia.com>
CC: Christoph Hellwig <hch(a)lst.de>
CC: Israel Rukshin <israelr(a)nvidia.com>
tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 521a547ced6477c54b4b0cc206000406c221b4d6
commit: 4686af885a9168f9ec70c4063616640911c48b03 nvme-rdma: add helpers for
mapping/unmapping request
date: 7 months ago
:::::: branch date: 28 hours ago
:::::: commit date: 7 months ago
config: arm-randconfig-c002-20220917
compiler: arm-linux-gnueabi-gcc (GCC) 12.1.0
reproduce (this is a W=1 build):
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
#
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit...
git remote add linus
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 4686af885a9168f9ec70c4063616640911c48b03
# save the config file
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross ARCH=arm
KBUILD_USERCFLAGS='-fanalyzer -Wno-error'
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp(a)intel.com>
gcc_analyzer warnings: (new ones prefixed by >>)
| | ~
| | |
| | (14) following 'false' branch...
|
'nvme_rdma_dma_map_req': event 15
|
|cc1:
| (15): ...to here
|
<------+
|
'nvme_rdma_map_data': events 16-21
|
| 1608 | ret = nvme_rdma_dma_map_req(ibdev, rq, &count,
&pi_count);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (16) returning to 'nvme_rdma_map_data' from
'nvme_rdma_dma_map_req'
| 1609 | if (unlikely(ret))
| | ~
| | |
| | (17) following 'false' branch...
|......
| 1612 | if (req->use_sig_mr) {
| | ~~~~~~~~~~~~~~~~
| | | |
| | | (18) ...to here
| | (19) following 'true' branch...
| 1613 | ret = nvme_rdma_map_sg_pi(queue, req, c, count,
pi_count);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) ...to here
| | (21) calling 'nvme_rdma_map_sg_pi'
from 'nvme_rdma_map_data'
|
+--> 'nvme_rdma_map_sg_pi': events 22-27
|
| 1476 | static int nvme_rdma_map_sg_pi(struct nvme_rdma_queue
*queue,
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (22) entry to 'nvme_rdma_map_sg_pi'
|......
| 1489 | if (WARN_ON_ONCE(!req->mr))
| | ~
| | |
| | (23) following 'false' branch...
|......
| 1492 | nr = ib_map_mr_sg_pi(req->mr,
sgl->sg_table.sgl, count, NULL,
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) ...to here
| 1493 |
req->metadata_sgl->sg_table.sgl, pi_count, NULL,
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| 1494 | SZ_4K);
| | ~~~~~~
| 1495 | if (unlikely(nr))
| | ~
| | |
| | (25) following 'false' branch...
|......
| 1498 |
nvme_rdma_set_sig_attrs(blk_get_integrity(bio->bi_bdev->bd_disk), c,
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (27) calling 'nvme_rdma_set_sig_attrs' from
'nvme_rdma_map_sg_pi'
| 1499 | req->mr->sig_attrs,
ns->pi_type);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) ...to here
|
+--> 'nvme_rdma_set_sig_attrs': events 28-31
|
| 1437 | static void nvme_rdma_set_sig_attrs(struct
blk_integrity *bi,
| | ^~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) entry to
'nvme_rdma_set_sig_attrs'
|......
| 1444 | if (control & NVME_RW_PRINFO_PRACT) {
| | ~
| | |
| | (29) following 'true' branch...
|......
| 1447 | nvme_rdma_set_sig_domain(bi, cmd,
&sig_attrs->wire, control,
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (30) ...to here
| | (31) calling
'nvme_rdma_set_sig_domain' from 'nvme_rdma_set_sig_attrs'
| 1448 | pi_type);
| | ~~~~~~~~
|
+--> 'nvme_rdma_set_sig_domain': events 32-33
|
| 1419 | static void nvme_rdma_set_sig_domain(struct
blk_integrity *bi,
| | ^~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) entry to
'nvme_rdma_set_sig_domain'
|......
| 1425 | domain->sig.dif.pi_interval = 1
<< bi->interval_exp;
| |
~~~~~~~~~~~~~~~~
| |
|
| |
(33) dereference of NULL 'bi'
|
drivers/nvme/host/rdma.c: In function 'nvme_rdma_map_data':
> drivers/nvme/host/rdma.c:1598:13: warning: use of uninitialized
value '<unknown>' [CWE-457] [-Wanalyzer-use-of-uninitialized-value]
1598 | int count, ret;
| ^~~~~
'nvme_rdma_queue_rq': events 1-4
|
| 2056 | static blk_status_t nvme_rdma_queue_rq(struct blk_mq_hw_ctx *hctx,
| | ^~~~~~~~~~~~~~~~~~
| | |
| | (1) entry to 'nvme_rdma_queue_rq'
|......
| 2072 | if (!nvme_check_ready(&queue->ctrl->ctrl, rq,
queue_ready))
| | ~
| | |
| | (2) following 'true' branch...
|......
| 2075 | dev = queue->device->dev;
| | ~~~~~~~~~~~~~
| | |
| | (3) ...to here
|......
| 2081 | if (unlikely(err))
| | ~
| | |
| | (4) following 'false' branch...
|
'nvme_rdma_queue_rq': event 5
|
|include/rdma/ib_verbs.h:4192:17:
| 4192 | dma_sync_single_for_cpu(dev->dma_device, addr, size,
dir);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) ...to here
|
'nvme_rdma_queue_rq': events 6-8
|
|drivers/nvme/host/rdma.c:2088:12:
| 2088 | if (ret)
| | ^
| | |
| | (6) following 'false' branch (when 'ret ==
0')...
|......
| 2091 | blk_mq_start_request(rq);
| | ~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (7) ...to here
|......
| 2102 | err = nvme_rdma_map_data(queue, rq, c);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (8) calling 'nvme_rdma_map_data' from
'nvme_rdma_queue_rq'
|
+--> 'nvme_rdma_map_data': events 9-10
|
| 1591 | static int nvme_rdma_map_data(struct nvme_rdma_queue *queue,
| | ^~~~~~~~~~~~~~~~~~
| | |
| | (9) entry to 'nvme_rdma_map_data'
|......
| 1598 | int count, ret;
| | ~~~~~
| | |
| | (10) use of uninitialized value
'<unknown>' here
|
vim +1598 drivers/nvme/host/rdma.c
4686af885a9168 Max Gurtovoy 2022-02-09 1590
4686af885a9168 Max Gurtovoy 2022-02-09 1591 static int nvme_rdma_map_data(struct
nvme_rdma_queue *queue,
4686af885a9168 Max Gurtovoy 2022-02-09 1592 struct request *rq, struct
nvme_command *c)
4686af885a9168 Max Gurtovoy 2022-02-09 1593 {
4686af885a9168 Max Gurtovoy 2022-02-09 1594 struct nvme_rdma_request *req =
blk_mq_rq_to_pdu(rq);
4686af885a9168 Max Gurtovoy 2022-02-09 1595 struct nvme_rdma_device *dev =
queue->device;
4686af885a9168 Max Gurtovoy 2022-02-09 1596 struct ib_device *ibdev =
dev->dev;
4686af885a9168 Max Gurtovoy 2022-02-09 1597 int pi_count = 0;
4686af885a9168 Max Gurtovoy 2022-02-09 @1598 int count, ret;
4686af885a9168 Max Gurtovoy 2022-02-09 1599
4686af885a9168 Max Gurtovoy 2022-02-09 1600 req->num_sge = 1;
4686af885a9168 Max Gurtovoy 2022-02-09 1601 refcount_set(&req->ref, 2); /*
send and recv completions */
4686af885a9168 Max Gurtovoy 2022-02-09 1602
4686af885a9168 Max Gurtovoy 2022-02-09 1603 c->common.flags |=
NVME_CMD_SGL_METABUF;
4686af885a9168 Max Gurtovoy 2022-02-09 1604
4686af885a9168 Max Gurtovoy 2022-02-09 1605 if (!blk_rq_nr_phys_segments(rq))
4686af885a9168 Max Gurtovoy 2022-02-09 1606 return nvme_rdma_set_sg_null(c);
4686af885a9168 Max Gurtovoy 2022-02-09 1607
4686af885a9168 Max Gurtovoy 2022-02-09 1608 ret = nvme_rdma_dma_map_req(ibdev, rq,
&count, &pi_count);
4686af885a9168 Max Gurtovoy 2022-02-09 1609 if (unlikely(ret))
4686af885a9168 Max Gurtovoy 2022-02-09 1610 return ret;
4686af885a9168 Max Gurtovoy 2022-02-09 1611
5ec5d3bddc6b91 Max Gurtovoy 2020-05-19 1612 if (req->use_sig_mr) {
5ec5d3bddc6b91 Max Gurtovoy 2020-05-19 1613 ret = nvme_rdma_map_sg_pi(queue, req,
c, count, pi_count);
5ec5d3bddc6b91 Max Gurtovoy 2020-05-19 1614 goto out;
5ec5d3bddc6b91 Max Gurtovoy 2020-05-19 1615 }
5ec5d3bddc6b91 Max Gurtovoy 2020-05-19 1616
64a741c1eaa83e Steve Wise 2018-06-20 1617 if (count <=
dev->num_inline_segments) {
b131c61d62266e Christoph Hellwig 2017-01-13 1618 if (rq_data_dir(rq) == WRITE
&& nvme_rdma_queue_idx(queue) &&
64a741c1eaa83e Steve Wise 2018-06-20 1619
queue->ctrl->use_inline_data &&
b131c61d62266e Christoph Hellwig 2017-01-13 1620 blk_rq_payload_bytes(rq) <=
94423a8f89ed7b Max Gurtovoy 2018-06-10 1621 nvme_rdma_inline_data_size(queue))
{
64a741c1eaa83e Steve Wise 2018-06-20 1622 ret = nvme_rdma_map_sg_inline(queue,
req, c, count);
94423a8f89ed7b Max Gurtovoy 2018-06-10 1623 goto out;
94423a8f89ed7b Max Gurtovoy 2018-06-10 1624 }
71102307196028 Christoph Hellwig 2016-07-06 1625
64a741c1eaa83e Steve Wise 2018-06-20 1626 if (count == 1 &&
dev->pd->flags & IB_PD_UNSAFE_GLOBAL_RKEY) {
94423a8f89ed7b Max Gurtovoy 2018-06-10 1627 ret = nvme_rdma_map_sg_single(queue,
req, c);
94423a8f89ed7b Max Gurtovoy 2018-06-10 1628 goto out;
71102307196028 Christoph Hellwig 2016-07-06 1629 }
94423a8f89ed7b Max Gurtovoy 2018-06-10 1630 }
94423a8f89ed7b Max Gurtovoy 2018-06-10 1631
94423a8f89ed7b Max Gurtovoy 2018-06-10 1632 ret = nvme_rdma_map_sg_fr(queue, req,
c, count);
94423a8f89ed7b Max Gurtovoy 2018-06-10 1633 out:
94423a8f89ed7b Max Gurtovoy 2018-06-10 1634 if (unlikely(ret))
4686af885a9168 Max Gurtovoy 2022-02-09 1635 goto out_dma_unmap_req;
71102307196028 Christoph Hellwig 2016-07-06 1636
94423a8f89ed7b Max Gurtovoy 2018-06-10 1637 return 0;
94423a8f89ed7b Max Gurtovoy 2018-06-10 1638
4686af885a9168 Max Gurtovoy 2022-02-09 1639 out_dma_unmap_req:
4686af885a9168 Max Gurtovoy 2022-02-09 1640 nvme_rdma_dma_unmap_req(ibdev, rq);
94423a8f89ed7b Max Gurtovoy 2018-06-10 1641 return ret;
71102307196028 Christoph Hellwig 2016-07-06 1642 }
71102307196028 Christoph Hellwig 2016-07-06 1643
--
0-DAY CI Kernel Test Service
https://01.org/lkp