From 11ccf3be2cd76e9946c21dbca3a9f1b9f02f6d07 Mon Sep 17 00:00:00 2001 From: Seth Howell Date: Wed, 29 Aug 2018 09:13:32 -0700 Subject: [PATCH] test/unit: Fix scan-build errors in bdev unittests Fixes a use after free error in bdev/bdev_ut Fixes an uninitialized argument value error in mt/bdev/bdev_ut Adds extra checks in the spdk_bdev_part_construct code Fixes a dereference of null pointer error in bdev/vbdev_lvol_ut Change-Id: I1eaa6ebfec0a36a0d910504c70b16ccc651de22a Signed-off-by: Seth Howell Reviewed-on: https://review.gerrithub.io/423923 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- test/unit/lib/bdev/bdev.c/bdev_ut.c | 2 +- test/unit/lib/bdev/mt/bdev.c/bdev_ut.c | 3 ++- test/unit/lib/bdev/part.c/part_ut.c | 6 ++++-- test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c index 2f4dde345..df011bbc1 100644 --- a/test/unit/lib/bdev/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c @@ -604,7 +604,7 @@ alias_add_del_test(void) /* Trying to del all alias from empty alias list */ spdk_bdev_alias_del_all(bdev[2]); - CU_ASSERT(TAILQ_EMPTY(&bdev[2]->aliases)); + SPDK_CU_ASSERT_FATAL(TAILQ_EMPTY(&bdev[2]->aliases)); /* Trying to del all alias from non-empty alias list */ rc = spdk_bdev_alias_add(bdev[2], "alias0"); diff --git a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c index 680e1c95e..f08a106a6 100644 --- a/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/mt/bdev.c/bdev_ut.c @@ -990,7 +990,7 @@ enomem_multi_io_target(void) uint32_t i; int new_io_device; struct ut_bdev *second_bdev; - struct spdk_bdev_desc *second_desc; + struct spdk_bdev_desc *second_desc = NULL; struct spdk_bdev_channel *second_bdev_ch; struct spdk_io_channel *second_ch; int rc; @@ -1004,6 +1004,7 @@ enomem_multi_io_target(void) SPDK_CU_ASSERT_FATAL(second_bdev != NULL); register_bdev(second_bdev, "ut_bdev2", &new_io_device); spdk_bdev_open(&second_bdev->bdev, true, NULL, NULL, &second_desc); + SPDK_CU_ASSERT_FATAL(second_desc != NULL); set_thread(0); io_ch = spdk_bdev_get_io_channel(g_desc); diff --git a/test/unit/lib/bdev/part.c/part_ut.c b/test/unit/lib/bdev/part.c/part_ut.c index 4a4eed8d1..528cc7e14 100644 --- a/test/unit/lib/bdev/part.c/part_ut.c +++ b/test/unit/lib/bdev/part.c/part_ut.c @@ -121,8 +121,10 @@ part_test(void) SPDK_CU_ASSERT_FATAL(base != NULL); - spdk_bdev_part_construct(&part1, base, "test1", 0, 100, "test"); - spdk_bdev_part_construct(&part2, base, "test2", 100, 100, "test"); + rc = spdk_bdev_part_construct(&part1, base, "test1", 0, 100, "test"); + SPDK_CU_ASSERT_FATAL(rc == 0); + rc = spdk_bdev_part_construct(&part2, base, "test2", 100, 100, "test"); + SPDK_CU_ASSERT_FATAL(rc == 0); spdk_bdev_part_base_hotremove(&bdev_base, &tailq); diff --git a/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c b/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c index 1e61d1fbf..5fff6ddef 100644 --- a/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c +++ b/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c @@ -766,7 +766,7 @@ ut_lvol_snapshot(void) g_lvolerrno = -1; rc = vbdev_lvol_create(lvs, "lvol", sz, false, vbdev_lvol_create_complete, NULL); SPDK_CU_ASSERT_FATAL(rc == 0); - CU_ASSERT(g_lvol != NULL); + SPDK_CU_ASSERT_FATAL(g_lvol != NULL); CU_ASSERT(g_lvolerrno == 0); lvol = g_lvol;