]> www.infradead.org Git - nvme.git/commitdiff
RDMA/bnxt_re: Fix an error path in bnxt_re_add_device
authorKalesh AP <kalesh-anakkur.purayil@broadcom.com>
Tue, 8 Oct 2024 07:41:39 +0000 (00:41 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 11 Oct 2024 23:49:01 +0000 (20:49 -0300)
In bnxt_re_add_device(), when register netdev notifier fails, driver is
not unregistering the IB device in the error cleanup path.  Also, removed
the duplicate cleanup in error path of bnxt_re_probe.

Fixes: 94a9dc6ac8f7 ("RDMA/bnxt_re: Group all operations under add_device and remove_device")
Link: https://patch.msgid.link/r/1728373302-19530-8-git-send-email-selvin.xavier@broadcom.com
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/bnxt_re/main.c

index b1dcb6bdac95035c986bbef1769a75eb083abab8..63ca6001792e722f36195330a9632dd1de931851 100644 (file)
@@ -1880,12 +1880,14 @@ static int bnxt_re_add_device(struct auxiliary_device *adev, u8 op_type)
                rdev->nb.notifier_call = NULL;
                pr_err("%s: Cannot register to netdevice_notifier",
                       ROCE_DRV_MODULE_NAME);
-               return rc;
+               goto re_dev_unreg;
        }
        bnxt_re_setup_cc(rdev, true);
 
        return 0;
 
+re_dev_unreg:
+       ib_unregister_device(&rdev->ibdev);
 re_dev_uninit:
        bnxt_re_update_en_info_rdev(NULL, en_info, adev);
        bnxt_re_dev_uninit(rdev, BNXT_RE_COMPLETE_REMOVE);
@@ -2029,15 +2031,7 @@ static int bnxt_re_probe(struct auxiliary_device *adev,
        auxiliary_set_drvdata(adev, en_info);
 
        rc = bnxt_re_add_device(adev, BNXT_RE_COMPLETE_INIT);
-       if (rc)
-               goto err;
        mutex_unlock(&bnxt_re_mutex);
-       return 0;
-
-err:
-       mutex_unlock(&bnxt_re_mutex);
-       bnxt_re_remove(adev);
-
        return rc;
 }