diff options
author | Bart Van Assche <bart.vanassche@gmail.com> | 2009-08-30 06:36:48 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2009-09-12 10:35:34 -0400 |
commit | afffd3dabe5209882c8cc59a373a4d33b5db304a (patch) | |
tree | c7ba34b77658151f0c56db47e9e1f4a617a3171c /drivers/scsi | |
parent | 661134ad3765348ecd6150a92e736bf28ba40f80 (diff) |
[SCSI] libsrp: fix memory leak in srp_ring_free()
This patch fixes a memory leak in the libsrp function srp_ring_free().
It is not documented whether or not this function should free the ring
pointer itself. But the source code of the callers of this function
(srp_target_alloc() and srp_target_free()) makes it clear that
srp_ring_free() should deallocate the ring pointer itself. Furthermore,
the patch below makes srp_ring_free() deallocate all memory allocated by
srp_ring_alloc().
This patch affects the ibmvstgt driver, which is the only in-tree driver
that calls the srp_ring_free() function (indirectly).
Signed-off-by: Bart Van Assche <bart.vanassche@gmail.com>
Acked-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
Cc: Stable Tree <stable@kernel.org>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi')
-rw-r--r-- | drivers/scsi/libsrp.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/scsi/libsrp.c b/drivers/scsi/libsrp.c index 2742ae8a3d09..9ad38e81e343 100644 --- a/drivers/scsi/libsrp.c +++ b/drivers/scsi/libsrp.c | |||
@@ -124,6 +124,7 @@ static void srp_ring_free(struct device *dev, struct srp_buf **ring, size_t max, | |||
124 | dma_free_coherent(dev, size, ring[i]->buf, ring[i]->dma); | 124 | dma_free_coherent(dev, size, ring[i]->buf, ring[i]->dma); |
125 | kfree(ring[i]); | 125 | kfree(ring[i]); |
126 | } | 126 | } |
127 | kfree(ring); | ||
127 | } | 128 | } |
128 | 129 | ||
129 | int srp_target_alloc(struct srp_target *target, struct device *dev, | 130 | int srp_target_alloc(struct srp_target *target, struct device *dev, |