2018-05-08 05:45:01

by Christophe JAILLET

[permalink] [raw]
Subject: [PATCH] iw_cxgb4: Fix an error handling path in 'c4iw_get_dma_mr()'

The error handling path of 'c4iw_get_dma_mr()' does not free resources
in the correct order.
If an error occures, it can leak 'mhp->wr_waitp'.

Fixes: a3f12da0e99a ("iw_cxgb4: allocate wait object for each memory object")
Signed-off-by: Christophe JAILLET <[email protected]>
---
drivers/infiniband/hw/cxgb4/mem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
index e90f2fd8dc16..1445918e3239 100644
--- a/drivers/infiniband/hw/cxgb4/mem.c
+++ b/drivers/infiniband/hw/cxgb4/mem.c
@@ -489,10 +489,10 @@ struct ib_mr *c4iw_get_dma_mr(struct ib_pd *pd, int acc)
err_dereg_mem:
dereg_mem(&rhp->rdev, mhp->attr.stag, mhp->attr.pbl_size,
mhp->attr.pbl_addr, mhp->dereg_skb, mhp->wr_waitp);
-err_free_wr_wait:
- c4iw_put_wr_wait(mhp->wr_waitp);
err_free_skb:
kfree_skb(mhp->dereg_skb);
+err_free_wr_wait:
+ c4iw_put_wr_wait(mhp->wr_waitp);
err_free_mhp:
kfree(mhp);
return ERR_PTR(ret);
--
2.17.0



2018-05-09 15:10:15

by Doug Ledford

[permalink] [raw]
Subject: Re: [PATCH] iw_cxgb4: Fix an error handling path in 'c4iw_get_dma_mr()'

On Tue, 2018-05-08 at 07:44 +0200, Christophe JAILLET wrote:
> The error handling path of 'c4iw_get_dma_mr()' does not free resources
> in the correct order.
> If an error occures, it can leak 'mhp->wr_waitp'.
>
> Fixes: a3f12da0e99a ("iw_cxgb4: allocate wait object for each memory object")
> Signed-off-by: Christophe JAILLET <[email protected]>

Applied to for-rc, thanks.

--
Doug Ledford <[email protected]>
GPG KeyID: B826A3330E572FDD
Key fingerprint = AE6B 1BDA 122B 23B4 265B 1274 B826 A333 0E57 2FDD


Attachments:
signature.asc (849.00 B)
This is a digitally signed message part