diff options
author | Bryan O'Sullivan <bos@pathscale.com> | 2006-07-01 04:35:55 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-01 09:55:59 -0700 |
commit | 60460dfd425e3d301831d8dd6398620d67bbda2b (patch) | |
tree | 737332fcd49bbb571cc0b1fc1d19e840e5bceb69 /drivers/infiniband | |
parent | 4a45b7d4ece0e6dc425e9f66fa8b501b72d846db (diff) | |
download | kernel_samsung_smdk4412-60460dfd425e3d301831d8dd6398620d67bbda2b.zip kernel_samsung_smdk4412-60460dfd425e3d301831d8dd6398620d67bbda2b.tar.gz kernel_samsung_smdk4412-60460dfd425e3d301831d8dd6398620d67bbda2b.tar.bz2 |
[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/infiniband')
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_init_chip.c | 1 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_qp.c | 2 |
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 e9b5534..37cd96e 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) "eager TID %u\n", e); while (e != 0) dev_kfree_skb(skbs[--e]); + vfree(skbs); ret = -ENOMEM; goto bail; } diff --git a/drivers/infiniband/hw/ipath/ipath_qp.c b/drivers/infiniband/hw/ipath/ipath_qp.c index e6fc4c0..fd4d55b 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, case IB_QPT_GSI: qp = kmalloc(sizeof(*qp), GFP_KERNEL); if (!qp) { + vfree(swq); ret = ERR_PTR(-ENOMEM); goto bail; } @@ -702,6 +703,7 @@ struct ib_qp *ipath_create_qp(struct ib_pd *ibpd, qp->r_rq.wq = vmalloc(qp->r_rq.size * sz); if (!qp->r_rq.wq) { kfree(qp); + vfree(swq); ret = ERR_PTR(-ENOMEM); goto bail; } |