From a7d816bfbec114a701084af6be8ee0d943c3d665 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 7 Dec 2017 14:28:44 -0700 Subject: [PATCH] ut/scsi/dev: fix memory leak in lun_construct stub Check if a LUN already exists before allocating the spdk_scsi_lun structure - this matches the real implementation of spdk_scsi_lun_construct(). Fixes: e44731d659f0 ("scsi: Remove the claimed flag from LUN") Change-Id: I529648f93cd21e9f19ce82ef571cabe9c7e8c49a Signed-off-by: Daniel Verkamp Reviewed-on: https://review.gerrithub.io/390903 Reviewed-by: Jim Harris Tested-by: SPDK Automated Test System --- test/unit/lib/scsi/dev.c/dev_ut.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/unit/lib/scsi/dev.c/dev_ut.c b/test/unit/lib/scsi/dev.c/dev_ut.c index ff0895216..22f0e04e1 100644 --- a/test/unit/lib/scsi/dev.c/dev_ut.c +++ b/test/unit/lib/scsi/dev.c/dev_ut.c @@ -97,18 +97,18 @@ spdk_scsi_lun_construct(const char *name, struct spdk_bdev *bdev, struct spdk_scsi_lun *lun; struct lun_entry *p; - lun = calloc(1, sizeof(struct spdk_scsi_lun)); - SPDK_CU_ASSERT_FATAL(lun != NULL); - - snprintf(lun->name, sizeof(lun->name), "%s", name); - lun->bdev = bdev; - TAILQ_FOREACH(p, &g_lun_head, lun_entries) { CU_ASSERT_FATAL(p->lun != NULL); - if (strncmp(p->lun->name, lun->name, sizeof(lun->name)) == 0) + if (strcmp(p->lun->name, name) == 0) { return NULL; + } } + lun = calloc(1, sizeof(struct spdk_scsi_lun)); + SPDK_CU_ASSERT_FATAL(lun != NULL); + snprintf(lun->name, sizeof(lun->name), "%s", name); + lun->bdev = bdev; + p = calloc(1, sizeof(struct lun_entry)); SPDK_CU_ASSERT_FATAL(p != NULL);