| From afffd3dabe5209882c8cc59a373a4d33b5db304a Mon Sep 17 00:00:00 2001 |
| From: Bart Van Assche <bart.vanassche@gmail.com> |
| Date: Sun, 30 Aug 2009 12:36:48 +0200 |
| Subject: SCSI: libsrp: fix memory leak in srp_ring_free() |
| |
| From: Bart Van Assche <bart.vanassche@gmail.com> |
| |
| commit afffd3dabe5209882c8cc59a373a4d33b5db304a upstream. |
| |
| 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> |
| Signed-off-by: James Bottomley <James.Bottomley@suse.de> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/scsi/libsrp.c | 1 + |
| 1 file changed, 1 insertion(+) |
| |
| --- a/drivers/scsi/libsrp.c |
| +++ b/drivers/scsi/libsrp.c |
| @@ -124,6 +124,7 @@ static void srp_ring_free(struct device |
| dma_free_coherent(dev, size, ring[i]->buf, ring[i]->dma); |
| kfree(ring[i]); |
| } |
| + kfree(ring); |
| } |
| |
| int srp_target_alloc(struct srp_target *target, struct device *dev, |