i40iw: Fail open if there are no available MSI-X vectors
authorShiraz Saleem <shiraz.saleem@intel.com>
Tue, 19 Sep 2017 14:19:09 +0000 (09:19 -0500)
committerDoug Ledford <dledford@redhat.com>
Fri, 22 Sep 2017 17:43:36 +0000 (13:43 -0400)
Check number of available MSI-X vectors for i40iw.
If there are no available vectors, fail the open.

Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/hw/i40iw/i40iw_main.c

index cc742c3132c6f49afa38282a9f694e2fa68385f7..5965b59a2f8358f26281ea7f0d2ebc1b2df9ff44 100644 (file)
@@ -1400,6 +1400,11 @@ static enum i40iw_status_code i40iw_save_msix_info(struct i40iw_device *iwdev,
        u32 i;
        u32 size;
 
+       if (!ldev->msix_count) {
+               i40iw_pr_err("No MSI-X vectors\n");
+               return I40IW_ERR_CONFIG;
+       }
+
        iwdev->msix_count = ldev->msix_count;
 
        size = sizeof(struct i40iw_msix_vector) * iwdev->msix_count;
@@ -1550,7 +1555,7 @@ static enum i40iw_status_code i40iw_setup_init_state(struct i40iw_handler *hdl,
 
        status = i40iw_save_msix_info(iwdev, ldev);
        if (status)
-               goto exit;
+               return status;
        iwdev->hw.dev_context = (void *)ldev->pcidev;
        iwdev->hw.hw_addr = ldev->hw_addr;
        status = i40iw_allocate_dma_mem(&iwdev->hw,