diff options
| -rw-r--r-- | drivers/infiniband/ulp/iser/iscsi_iser.h | 1 | ||||
| -rw-r--r-- | drivers/infiniband/ulp/iser/iser_verbs.c | 18 |
2 files changed, 7 insertions, 12 deletions
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.h b/drivers/infiniband/ulp/iser/iscsi_iser.h index ca161dfeee48..b4290f509a39 100644 --- a/drivers/infiniband/ulp/iser/iscsi_iser.h +++ b/drivers/infiniband/ulp/iser/iscsi_iser.h | |||
| @@ -260,6 +260,7 @@ struct iscsi_iser_task; | |||
| 260 | struct iser_device { | 260 | struct iser_device { |
| 261 | struct ib_device *ib_device; | 261 | struct ib_device *ib_device; |
| 262 | struct ib_pd *pd; | 262 | struct ib_pd *pd; |
| 263 | struct ib_device_attr dev_attr; | ||
| 263 | struct ib_cq *rx_cq[ISER_MAX_CQ]; | 264 | struct ib_cq *rx_cq[ISER_MAX_CQ]; |
| 264 | struct ib_cq *tx_cq[ISER_MAX_CQ]; | 265 | struct ib_cq *tx_cq[ISER_MAX_CQ]; |
| 265 | struct ib_mr *mr; | 266 | struct ib_mr *mr; |
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c index 9569e402d368..95fcfcac0100 100644 --- a/drivers/infiniband/ulp/iser/iser_verbs.c +++ b/drivers/infiniband/ulp/iser/iser_verbs.c | |||
| @@ -71,17 +71,14 @@ static void iser_event_handler(struct ib_event_handler *handler, | |||
| 71 | */ | 71 | */ |
| 72 | static int iser_create_device_ib_res(struct iser_device *device) | 72 | static int iser_create_device_ib_res(struct iser_device *device) |
| 73 | { | 73 | { |
| 74 | int i, j; | ||
| 75 | struct iser_cq_desc *cq_desc; | 74 | struct iser_cq_desc *cq_desc; |
| 76 | struct ib_device_attr *dev_attr; | 75 | struct ib_device_attr *dev_attr = &device->dev_attr; |
| 76 | int ret, i, j; | ||
| 77 | 77 | ||
| 78 | dev_attr = kmalloc(sizeof(*dev_attr), GFP_KERNEL); | 78 | ret = ib_query_device(device->ib_device, dev_attr); |
| 79 | if (!dev_attr) | 79 | if (ret) { |
| 80 | return -ENOMEM; | ||
| 81 | |||
| 82 | if (ib_query_device(device->ib_device, dev_attr)) { | ||
| 83 | pr_warn("Query device failed for %s\n", device->ib_device->name); | 80 | pr_warn("Query device failed for %s\n", device->ib_device->name); |
| 84 | goto dev_attr_err; | 81 | return ret; |
| 85 | } | 82 | } |
| 86 | 83 | ||
| 87 | /* Assign function handles - based on FMR support */ | 84 | /* Assign function handles - based on FMR support */ |
| @@ -101,7 +98,7 @@ static int iser_create_device_ib_res(struct iser_device *device) | |||
| 101 | device->iser_unreg_rdma_mem = iser_unreg_mem_fastreg; | 98 | device->iser_unreg_rdma_mem = iser_unreg_mem_fastreg; |
| 102 | } else { | 99 | } else { |
| 103 | iser_err("IB device does not support FMRs nor FastRegs, can't register memory\n"); | 100 | iser_err("IB device does not support FMRs nor FastRegs, can't register memory\n"); |
| 104 | goto dev_attr_err; | 101 | return -1; |
| 105 | } | 102 | } |
| 106 | 103 | ||
| 107 | device->cqs_used = min(ISER_MAX_CQ, device->ib_device->num_comp_vectors); | 104 | device->cqs_used = min(ISER_MAX_CQ, device->ib_device->num_comp_vectors); |
| @@ -158,7 +155,6 @@ static int iser_create_device_ib_res(struct iser_device *device) | |||
| 158 | if (ib_register_event_handler(&device->event_handler)) | 155 | if (ib_register_event_handler(&device->event_handler)) |
| 159 | goto handler_err; | 156 | goto handler_err; |
| 160 | 157 | ||
| 161 | kfree(dev_attr); | ||
| 162 | return 0; | 158 | return 0; |
| 163 | 159 | ||
| 164 | handler_err: | 160 | handler_err: |
| @@ -178,8 +174,6 @@ pd_err: | |||
| 178 | kfree(device->cq_desc); | 174 | kfree(device->cq_desc); |
| 179 | cq_desc_err: | 175 | cq_desc_err: |
| 180 | iser_err("failed to allocate an IB resource\n"); | 176 | iser_err("failed to allocate an IB resource\n"); |
| 181 | dev_attr_err: | ||
| 182 | kfree(dev_attr); | ||
| 183 | return -1; | 177 | return -1; |
| 184 | } | 178 | } |
| 185 | 179 | ||
