diff options
author | Vu Pham <vu@mellanox.com> | 2006-11-21 17:14:10 -0500 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2006-11-29 18:33:09 -0500 |
commit | d2fcea7d68473b8bb3e0addb4926c87e2217ca83 (patch) | |
tree | f0895261c6a063604837b9321315c896f4b5e8b8 /drivers/infiniband | |
parent | 04699a1f8634a4e89c71b22050b599c72126fa96 (diff) |
IB/srp: Fix memory leak on reconnect
SRP reallocates the IU buffers for tx_ring and rx_ring without freeing
the old buffers when it reconnects to a target. Fix this by keeping
the old IU buffers around.
Signed-off-by: Vu Pham <vu@mellanox.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/ulp/srp/ib_srp.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/infiniband/ulp/srp/ib_srp.c b/drivers/infiniband/ulp/srp/ib_srp.c index 613be2ef9c52..64ab5fc7cca3 100644 --- a/drivers/infiniband/ulp/srp/ib_srp.c +++ b/drivers/infiniband/ulp/srp/ib_srp.c | |||
@@ -1176,9 +1176,11 @@ static int srp_cm_handler(struct ib_cm_id *cm_id, struct ib_cm_event *event) | |||
1176 | break; | 1176 | break; |
1177 | } | 1177 | } |
1178 | 1178 | ||
1179 | target->status = srp_alloc_iu_bufs(target); | 1179 | if (!target->rx_ring[0]) { |
1180 | if (target->status) | 1180 | target->status = srp_alloc_iu_bufs(target); |
1181 | break; | 1181 | if (target->status) |
1182 | break; | ||
1183 | } | ||
1182 | 1184 | ||
1183 | qp_attr = kmalloc(sizeof *qp_attr, GFP_KERNEL); | 1185 | qp_attr = kmalloc(sizeof *qp_attr, GFP_KERNEL); |
1184 | if (!qp_attr) { | 1186 | if (!qp_attr) { |