aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/hw/i40iw/i40iw_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/hw/i40iw/i40iw_main.c')
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_main.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/infiniband/hw/i40iw/i40iw_main.c b/drivers/infiniband/hw/i40iw/i40iw_main.c
index 2728af3103ce..a3f18a22f5ed 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_main.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_main.c
@@ -1319,13 +1319,13 @@ static enum i40iw_status_code i40iw_initialize_dev(struct i40iw_device *iwdev,
1319 status = i40iw_obj_aligned_mem(iwdev, &mem, I40IW_QUERY_FPM_BUF_SIZE, 1319 status = i40iw_obj_aligned_mem(iwdev, &mem, I40IW_QUERY_FPM_BUF_SIZE,
1320 I40IW_FPM_QUERY_BUF_ALIGNMENT_MASK); 1320 I40IW_FPM_QUERY_BUF_ALIGNMENT_MASK);
1321 if (status) 1321 if (status)
1322 goto exit; 1322 goto error;
1323 info.fpm_query_buf_pa = mem.pa; 1323 info.fpm_query_buf_pa = mem.pa;
1324 info.fpm_query_buf = mem.va; 1324 info.fpm_query_buf = mem.va;
1325 status = i40iw_obj_aligned_mem(iwdev, &mem, I40IW_COMMIT_FPM_BUF_SIZE, 1325 status = i40iw_obj_aligned_mem(iwdev, &mem, I40IW_COMMIT_FPM_BUF_SIZE,
1326 I40IW_FPM_COMMIT_BUF_ALIGNMENT_MASK); 1326 I40IW_FPM_COMMIT_BUF_ALIGNMENT_MASK);
1327 if (status) 1327 if (status)
1328 goto exit; 1328 goto error;
1329 info.fpm_commit_buf_pa = mem.pa; 1329 info.fpm_commit_buf_pa = mem.pa;
1330 info.fpm_commit_buf = mem.va; 1330 info.fpm_commit_buf = mem.va;
1331 info.hmc_fn_id = ldev->fid; 1331 info.hmc_fn_id = ldev->fid;
@@ -1347,11 +1347,9 @@ static enum i40iw_status_code i40iw_initialize_dev(struct i40iw_device *iwdev,
1347 info.exception_lan_queue = 1; 1347 info.exception_lan_queue = 1;
1348 info.vchnl_send = i40iw_virtchnl_send; 1348 info.vchnl_send = i40iw_virtchnl_send;
1349 status = i40iw_device_init(&iwdev->sc_dev, &info); 1349 status = i40iw_device_init(&iwdev->sc_dev, &info);
1350exit: 1350
1351 if (status) { 1351 if (status)
1352 kfree(iwdev->hmc_info_mem); 1352 goto error;
1353 iwdev->hmc_info_mem = NULL;
1354 }
1355 memset(&vsi_info, 0, sizeof(vsi_info)); 1353 memset(&vsi_info, 0, sizeof(vsi_info));
1356 vsi_info.dev = &iwdev->sc_dev; 1354 vsi_info.dev = &iwdev->sc_dev;
1357 vsi_info.back_vsi = (void *)iwdev; 1355 vsi_info.back_vsi = (void *)iwdev;
@@ -1362,11 +1360,19 @@ exit:
1362 memset(&stats_info, 0, sizeof(stats_info)); 1360 memset(&stats_info, 0, sizeof(stats_info));
1363 stats_info.fcn_id = ldev->fid; 1361 stats_info.fcn_id = ldev->fid;
1364 stats_info.pestat = kzalloc(sizeof(*stats_info.pestat), GFP_KERNEL); 1362 stats_info.pestat = kzalloc(sizeof(*stats_info.pestat), GFP_KERNEL);
1363 if (!stats_info.pestat) {
1364 status = I40IW_ERR_NO_MEMORY;
1365 goto error;
1366 }
1365 stats_info.stats_initialize = true; 1367 stats_info.stats_initialize = true;
1366 if (stats_info.pestat) 1368 if (stats_info.pestat)
1367 i40iw_vsi_stats_init(&iwdev->vsi, &stats_info); 1369 i40iw_vsi_stats_init(&iwdev->vsi, &stats_info);
1368 } 1370 }
1369 return status; 1371 return status;
1372error:
1373 kfree(iwdev->hmc_info_mem);
1374 iwdev->hmc_info_mem = NULL;
1375 return status;
1370} 1376}
1371 1377
1372/** 1378/**