RDMA/bnxt_re: Fix the ib_reg failure cleanup
authorSelvin Xavier <selvin.xavier@broadcom.com>
Mon, 26 Feb 2018 09:51:39 +0000 (01:51 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 30 May 2018 05:52:08 +0000 (07:52 +0200)
[ Upstream commit 497158aa5f520db50452ef928c0f955cb42f2e77 ]

Release the netdev references in the cleanup path.  Invokes the cleanup
routines if bnxt_re_ib_reg fails.

Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/infiniband/hw/bnxt_re/main.c

index 1cc382049dabd40372240f8719a9d7d6e28f47b8..bf811b23bc95334dd6e4d7314791bbf89ea31940 100644 (file)
@@ -1240,9 +1240,12 @@ static void bnxt_re_task(struct work_struct *work)
        switch (re_work->event) {
        case NETDEV_REGISTER:
                rc = bnxt_re_ib_reg(rdev);
-               if (rc)
+               if (rc) {
                        dev_err(rdev_to_dev(rdev),
                                "Failed to register with IB: %#x", rc);
+                       bnxt_re_remove_one(rdev);
+                       bnxt_re_dev_unreg(rdev);
+               }
                break;
        case NETDEV_UP:
                bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1,