diff options
| -rw-r--r-- | drivers/infiniband/hw/ocrdma/ocrdma_hw.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c index e6463cb0f988..55308b667649 100644 --- a/drivers/infiniband/hw/ocrdma/ocrdma_hw.c +++ b/drivers/infiniband/hw/ocrdma/ocrdma_hw.c | |||
| @@ -1505,6 +1505,7 @@ static void ocrdma_mbx_delete_ah_tbl(struct ocrdma_dev *dev) | |||
| 1505 | ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); | 1505 | ocrdma_mbx_cmd(dev, (struct ocrdma_mqe *)cmd); |
| 1506 | dma_free_coherent(&pdev->dev, dev->av_tbl.size, dev->av_tbl.va, | 1506 | dma_free_coherent(&pdev->dev, dev->av_tbl.size, dev->av_tbl.va, |
| 1507 | dev->av_tbl.pa); | 1507 | dev->av_tbl.pa); |
| 1508 | dev->av_tbl.va = NULL; | ||
| 1508 | dma_free_coherent(&pdev->dev, PAGE_SIZE, dev->av_tbl.pbl.va, | 1509 | dma_free_coherent(&pdev->dev, PAGE_SIZE, dev->av_tbl.pbl.va, |
| 1509 | dev->av_tbl.pbl.pa); | 1510 | dev->av_tbl.pbl.pa); |
| 1510 | kfree(cmd); | 1511 | kfree(cmd); |
| @@ -2882,13 +2883,15 @@ int ocrdma_init_hw(struct ocrdma_dev *dev) | |||
| 2882 | goto conf_err; | 2883 | goto conf_err; |
| 2883 | status = ocrdma_mbx_get_phy_info(dev); | 2884 | status = ocrdma_mbx_get_phy_info(dev); |
| 2884 | if (status) | 2885 | if (status) |
| 2885 | goto conf_err; | 2886 | goto info_attrb_err; |
| 2886 | status = ocrdma_mbx_get_ctrl_attribs(dev); | 2887 | status = ocrdma_mbx_get_ctrl_attribs(dev); |
| 2887 | if (status) | 2888 | if (status) |
| 2888 | goto conf_err; | 2889 | goto info_attrb_err; |
| 2889 | 2890 | ||
| 2890 | return 0; | 2891 | return 0; |
| 2891 | 2892 | ||
| 2893 | info_attrb_err: | ||
| 2894 | ocrdma_mbx_delete_ah_tbl(dev); | ||
| 2892 | conf_err: | 2895 | conf_err: |
| 2893 | ocrdma_destroy_mq(dev); | 2896 | ocrdma_destroy_mq(dev); |
| 2894 | mq_err: | 2897 | mq_err: |
