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@xxxxxxxxx> Cc: James Bottomley <James.Bottomley@xxxxxxx> Cc: FUJITA Tomonori <tomof@xxxxxxx> Cc: Stable Team <stable@xxxxxxxxxx> diff -uprN orig/linux-2.6.30/drivers/scsi/libsrp.c linux-2.6.30/drivers/scsi/libsrp.c --- orig/linux-2.6.30/drivers/scsi/libsrp.c 2009-06-10 05:05:27.000000000 +0200 +++ linux-2.6.30/drivers/scsi/libsrp.c 2009-08-30 11:53:26.000000000 +0200 @@ -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, -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html