diff options
Diffstat (limited to 'drivers/infiniband/hw/i40iw/i40iw_main.c')
| -rw-r--r-- | drivers/infiniband/hw/i40iw/i40iw_main.c | 20 |
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); |
| 1350 | exit: | 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; |
| 1372 | error: | ||
| 1373 | kfree(iwdev->hmc_info_mem); | ||
| 1374 | iwdev->hmc_info_mem = NULL; | ||
| 1375 | return status; | ||
| 1370 | } | 1376 | } |
| 1371 | 1377 | ||
| 1372 | /** | 1378 | /** |
