i40iw: Fix order of cleanup in close
authorMustafa Ismail <mustafa.ismail@intel.com>
Fri, 23 Jun 2017 21:03:55 +0000 (16:03 -0500)
committerDoug Ledford <dledford@redhat.com>
Thu, 20 Jul 2017 15:20:48 +0000 (11:20 -0400)
The order for calling i40iw_destroy_pble_pool is incorrect.
Also, add PBLE_CHUNK_MEM init state to track pble pool
creation and destruction.

Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
Signed-off-by: Henry Orosco <henry.orosco@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/i40iw/i40iw_main.c

index e0f47cc2effc36ae40de18961348e6063ef0658b..8fc61b3bd2237335609b8e13d9db256fe9bc614b 100644 (file)
@@ -1474,6 +1474,9 @@ static void i40iw_deinit_device(struct i40iw_device *iwdev, bool reset)
                        unregister_inet6addr_notifier(&i40iw_inetaddr6_notifier);
                }
                /* fallthrough */
+       case PBLE_CHUNK_MEM:
+               i40iw_destroy_pble_pool(dev, iwdev->pble_rsrc);
+               /* fallthrough */
        case CEQ_CREATED:
                i40iw_dele_ceqs(iwdev, reset);
                /* fallthrough */
@@ -1489,9 +1492,6 @@ static void i40iw_deinit_device(struct i40iw_device *iwdev, bool reset)
        case CCQ_CREATED:
                i40iw_destroy_ccq(iwdev, reset);
                /* fallthrough */
-       case PBLE_CHUNK_MEM:
-               i40iw_destroy_pble_pool(dev, iwdev->pble_rsrc);
-               /* fallthrough */
        case HMC_OBJS_CREATED:
                i40iw_del_hmc_objects(dev, dev->hmc_info, true, reset);
                /* fallthrough */
@@ -1670,6 +1670,7 @@ static int i40iw_open(struct i40e_info *ldev, struct i40e_client *client)
                status = i40iw_hmc_init_pble(&iwdev->sc_dev, iwdev->pble_rsrc);
                if (status)
                        break;
+               iwdev->init_state = PBLE_CHUNK_MEM;
                iwdev->virtchnl_wq = alloc_ordered_workqueue("iwvch", WQ_MEM_RECLAIM);
                i40iw_register_notifiers();
                iwdev->init_state = INET_NOTIFIER;