Skip to content

Commit 0ba9294

Browse files
Kalesh APjgunthorpe
authored andcommitted
RDMA/bnxt_re: Fix a possible NULL pointer dereference
There is a possibility of a NULL pointer dereference in the failure path of bnxt_re_add_device(). To address that, moved the update of "rdev->adev" to bnxt_re_dev_add(). Fixes: dee3da3 ("RDMA/bnxt_re: Change aux driver data to en_info to hold more information") Link: https://patch.msgid.link/r/[email protected] Reported-by: Dan Carpenter <[email protected]> Closes: https://lore.kernel.org/linux-rdma/CAH-L+nMCwymKGqf5pd8-FZNhxEkDD=kb6AoCaE6fAVi7b3e5Qw@mail.gmail.com/T/#t Signed-off-by: Kalesh AP <[email protected]> Signed-off-by: Selvin Xavier <[email protected]> Signed-off-by: Jason Gunthorpe <[email protected]>
1 parent 98647df commit 0ba9294

File tree

1 file changed

+3
-3
lines changed
  • drivers/infiniband/hw/bnxt_re

1 file changed

+3
-3
lines changed

drivers/infiniband/hw/bnxt_re/main.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -960,7 +960,7 @@ static int bnxt_re_register_ib(struct bnxt_re_dev *rdev)
960960
return ib_register_device(ibdev, "bnxt_re%d", &rdev->en_dev->pdev->dev);
961961
}
962962

963-
static struct bnxt_re_dev *bnxt_re_dev_add(struct bnxt_aux_priv *aux_priv,
963+
static struct bnxt_re_dev *bnxt_re_dev_add(struct auxiliary_device *adev,
964964
struct bnxt_en_dev *en_dev)
965965
{
966966
struct bnxt_re_dev *rdev;
@@ -976,6 +976,7 @@ static struct bnxt_re_dev *bnxt_re_dev_add(struct bnxt_aux_priv *aux_priv,
976976
rdev->nb.notifier_call = NULL;
977977
rdev->netdev = en_dev->net;
978978
rdev->en_dev = en_dev;
979+
rdev->adev = adev;
979980
rdev->id = rdev->en_dev->pdev->devfn;
980981
INIT_LIST_HEAD(&rdev->qp_list);
981982
mutex_init(&rdev->qp_lock);
@@ -1829,7 +1830,6 @@ static void bnxt_re_update_en_info_rdev(struct bnxt_re_dev *rdev,
18291830
*/
18301831
rtnl_lock();
18311832
en_info->rdev = rdev;
1832-
rdev->adev = adev;
18331833
rtnl_unlock();
18341834
}
18351835

@@ -1846,7 +1846,7 @@ static int bnxt_re_add_device(struct auxiliary_device *adev, u8 op_type)
18461846
en_dev = en_info->en_dev;
18471847

18481848

1849-
rdev = bnxt_re_dev_add(aux_priv, en_dev);
1849+
rdev = bnxt_re_dev_add(adev, en_dev);
18501850
if (!rdev || !rdev_to_dev(rdev)) {
18511851
rc = -ENOMEM;
18521852
goto exit;

0 commit comments

Comments
 (0)