提交 60460dfd 编写于 作者: B Bryan O'Sullivan 提交者: Linus Torvalds

[PATCH] IB/ipath: fix some memory leaks on failure paths

Signed-off-by: NRobert Walsh <robert.walsh@qlogic.com>
Signed-off-by: NBryan O'Sullivan <bryan.osullivan@qlogic.com>
Cc: "Michael S. Tsirkin" <mst@mellanox.co.il>
Cc: Roland Dreier <rolandd@cisco.com>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 4a45b7d4
...@@ -115,6 +115,7 @@ static int create_port0_egr(struct ipath_devdata *dd) ...@@ -115,6 +115,7 @@ static int create_port0_egr(struct ipath_devdata *dd)
"eager TID %u\n", e); "eager TID %u\n", e);
while (e != 0) while (e != 0)
dev_kfree_skb(skbs[--e]); dev_kfree_skb(skbs[--e]);
vfree(skbs);
ret = -ENOMEM; ret = -ENOMEM;
goto bail; goto bail;
} }
......
...@@ -692,6 +692,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, ...@@ -692,6 +692,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
case IB_QPT_GSI: case IB_QPT_GSI:
qp = kmalloc(sizeof(*qp), GFP_KERNEL); qp = kmalloc(sizeof(*qp), GFP_KERNEL);
if (!qp) { if (!qp) {
vfree(swq);
ret = ERR_PTR(-ENOMEM); ret = ERR_PTR(-ENOMEM);
goto bail; goto bail;
} }
...@@ -702,6 +703,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, ...@@ -702,6 +703,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
qp->r_rq.wq = vmalloc(qp->r_rq.size * sz); qp->r_rq.wq = vmalloc(qp->r_rq.size * sz);
if (!qp->r_rq.wq) { if (!qp->r_rq.wq) {
kfree(qp); kfree(qp);
vfree(swq);
ret = ERR_PTR(-ENOMEM); ret = ERR_PTR(-ENOMEM);
goto bail; goto bail;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册