RDMA/bnxt_re: Avoid NULL check after accessing the pointer
authorSelvin Xavier <selvin.xavier@broadcom.com>
Mon, 8 Oct 2018 10:27:55 +0000 (03:27 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 1 Dec 2019 08:16:23 +0000 (09:16 +0100)
[ Upstream commit eae4ad1b0c9a77ef0cbac212d58d46976eaacfc1 ]

This is reported by smatch check.  rcfw->creq_bar_reg_iomem is accessed in
bnxt_qplib_rcfw_stop_irq and this variable check afterwards doesn't make
sense.  Also, rcfw->creq_bar_reg_iomem will never be NULL.  So Removing
this check.

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Fixes: 6e04b1035689 ("RDMA/bnxt_re: Fix broken RoCE driver due to recent L2 driver changes")
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/infiniband/hw/bnxt_re/qplib_rcfw.c

index 6637df7..8b3b5fd 100644 (file)
@@ -614,13 +614,8 @@ void bnxt_qplib_disable_rcfw_channel(struct bnxt_qplib_rcfw *rcfw)
 
        bnxt_qplib_rcfw_stop_irq(rcfw, true);
 
-       if (rcfw->cmdq_bar_reg_iomem)
-               iounmap(rcfw->cmdq_bar_reg_iomem);
-       rcfw->cmdq_bar_reg_iomem = NULL;
-
-       if (rcfw->creq_bar_reg_iomem)
-               iounmap(rcfw->creq_bar_reg_iomem);
-       rcfw->creq_bar_reg_iomem = NULL;
+       iounmap(rcfw->cmdq_bar_reg_iomem);
+       iounmap(rcfw->creq_bar_reg_iomem);
 
        indx = find_first_bit(rcfw->cmdq_bitmap, rcfw->bmap_size);
        if (indx != rcfw->bmap_size)
@@ -629,6 +624,8 @@ void bnxt_qplib_disable_rcfw_channel(struct bnxt_qplib_rcfw *rcfw)
        kfree(rcfw->cmdq_bitmap);
        rcfw->bmap_size = 0;
 
+       rcfw->cmdq_bar_reg_iomem = NULL;
+       rcfw->creq_bar_reg_iomem = NULL;
        rcfw->aeq_handler = NULL;
        rcfw->vector = 0;
 }
@@ -714,6 +711,8 @@ int bnxt_qplib_enable_rcfw_channel(struct pci_dev *pdev,
                dev_err(&rcfw->pdev->dev,
                        "QPLIB: CREQ BAR region %d mapping failed",
                        rcfw->creq_bar_reg);
+               iounmap(rcfw->cmdq_bar_reg_iomem);
+               rcfw->cmdq_bar_reg_iomem = NULL;
                return -ENOMEM;
        }
        rcfw->creq_qp_event_processed = 0;