From b2fb55192c07c8fbf4e9b568cef885aee0a28254 Mon Sep 17 00:00:00 2001 From: Changpeng Liu Date: Mon, 19 Nov 2018 23:55:09 -0500 Subject: [PATCH] scsi: fix possible memory leak for unmap command Althrough it has very small chance to be executed, it's nice to have it fixed. Change-Id: I899681ccc13ed59c7fdd343ef7791df4e69e490f Signed-off-by: Changpeng Liu Reviewed-on: https://review.gerrithub.io/433976 Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto --- lib/scsi/scsi_bdev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/scsi/scsi_bdev.c b/lib/scsi/scsi_bdev.c index a929ebe42..66346c3ef 100644 --- a/lib/scsi/scsi_bdev.c +++ b/lib/scsi/scsi_bdev.c @@ -1592,7 +1592,7 @@ spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, struct spdk_io_channel *bdev_ch, struct spdk_scsi_task *task, struct spdk_bdev_scsi_unmap_ctx *ctx) { uint8_t *data; - int desc_count, i; + int i, desc_count = -1; int data_len; int rc; @@ -1619,8 +1619,8 @@ spdk_bdev_scsi_unmap(struct spdk_bdev *bdev, struct spdk_bdev_desc *bdev_desc, desc_count = __copy_desc(ctx, data, data_len); } else { data = spdk_scsi_task_gather_data(task, &data_len); - desc_count = __copy_desc(ctx, data, data_len); - if (desc_count < 0) { + if (data) { + desc_count = __copy_desc(ctx, data, data_len); spdk_dma_free(data); } }