diff options
author | Selvin Xavier <selvin.xavier@broadcom.com> | 2018-02-26 04:51:39 -0500 |
---|---|---|
committer | Jason Gunthorpe <jgg@mellanox.com> | 2018-02-28 14:10:33 -0500 |
commit | 497158aa5f520db50452ef928c0f955cb42f2e77 (patch) | |
tree | 1d650165443c500358b0c55b19ff6eebf1e5196c | |
parent | c354dff00db8df80f271418d8392065e10ffffb6 (diff) |
RDMA/bnxt_re: Fix the ib_reg failure cleanup
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>
-rw-r--r-- | drivers/infiniband/hw/bnxt_re/main.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c index 33a448036c2e..604c805ceaa7 100644 --- a/drivers/infiniband/hw/bnxt_re/main.c +++ b/drivers/infiniband/hw/bnxt_re/main.c | |||
@@ -1416,9 +1416,12 @@ static void bnxt_re_task(struct work_struct *work) | |||
1416 | switch (re_work->event) { | 1416 | switch (re_work->event) { |
1417 | case NETDEV_REGISTER: | 1417 | case NETDEV_REGISTER: |
1418 | rc = bnxt_re_ib_reg(rdev); | 1418 | rc = bnxt_re_ib_reg(rdev); |
1419 | if (rc) | 1419 | if (rc) { |
1420 | dev_err(rdev_to_dev(rdev), | 1420 | dev_err(rdev_to_dev(rdev), |
1421 | "Failed to register with IB: %#x", rc); | 1421 | "Failed to register with IB: %#x", rc); |
1422 | bnxt_re_remove_one(rdev); | ||
1423 | bnxt_re_dev_unreg(rdev); | ||
1424 | } | ||
1422 | break; | 1425 | break; |
1423 | case NETDEV_UP: | 1426 | case NETDEV_UP: |
1424 | bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1, | 1427 | bnxt_re_dispatch_event(&rdev->ibdev, NULL, 1, |