aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorBryan O'Sullivan <bos@pathscale.com>2006-07-01 07:35:55 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-07-01 12:55:59 -0400
commit60460dfd425e3d301831d8dd6398620d67bbda2b (patch)
tree737332fcd49bbb571cc0b1fc1d19e840e5bceb69 /drivers
parent4a45b7d4ece0e6dc425e9f66fa8b501b72d846db (diff)
[PATCH] IB/ipath: fix some memory leaks on failure paths
Signed-off-by: Robert Walsh <robert.walsh@qlogic.com> Signed-off-by: Bryan O'Sullivan <bryan.osullivan@qlogic.com> Cc: "Michael S. Tsirkin" <mst@mellanox.co.il> Cc: Roland Dreier <rolandd@cisco.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/infiniband/hw/ipath/ipath_init_chip.c1
-rw-r--r--drivers/infiniband/hw/ipath/ipath_qp.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/ipath/ipath_init_chip.c b/drivers/infiniband/hw/ipath/ipath_init_chip.c
index e9b5534f215a..37cd96e96e3e 100644
--- a/drivers/infiniband/hw/ipath/ipath_init_chip.c
+++ b/drivers/infiniband/hw/ipath/ipath_init_chip.c
@@ -115,6 +115,7 @@ static int create_port0_egr(struct ipath_devdata *dd)
115 "eager TID %u\n", e); 115 "eager TID %u\n", e);
116 while (e != 0) 116 while (e != 0)
117 dev_kfree_skb(skbs[--e]); 117 dev_kfree_skb(skbs[--e]);
118 vfree(skbs);
118 ret = -ENOMEM; 119 ret = -ENOMEM;
119 goto bail; 120 goto bail;
120 } 121 }
diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c
index e6fc4c02823f..fd4d55bdee78 100644
--- a/drivers/infiniband/hw/ipath/ipath_qp.c
+++ b/drivers/infiniband/hw/ipath/ipath_qp.c
@@ -692,6 +692,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
692 case IB_QPT_GSI: 692 case IB_QPT_GSI:
693 qp = kmalloc(sizeof(*qp), GFP_KERNEL); 693 qp = kmalloc(sizeof(*qp), GFP_KERNEL);
694 if (!qp) { 694 if (!qp) {
695 vfree(swq);
695 ret = ERR_PTR(-ENOMEM); 696 ret = ERR_PTR(-ENOMEM);
696 goto bail; 697 goto bail;
697 } 698 }
@@ -702,6 +703,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd,
702 qp->r_rq.wq = vmalloc(qp->r_rq.size * sz); 703 qp->r_rq.wq = vmalloc(qp->r_rq.size * sz);
703 if (!qp->r_rq.wq) { 704 if (!qp->r_rq.wq) {
704 kfree(qp); 705 kfree(qp);
706 vfree(swq);
705 ret = ERR_PTR(-ENOMEM); 707 ret = ERR_PTR(-ENOMEM);
706 goto bail; 708 goto bail;
707 } 709 }