From 3a5abc63b8f6ab0fe25c898a5af9f5ca738c462c Mon Sep 17 00:00:00 2001 From: JinYu Date: Fri, 29 Mar 2019 21:42:13 +0800 Subject: [PATCH] test/unit: Make sure the function runs correctly 1,add a judgement to ensure spdk_blob_close() runs correctly. 2,make sure the command has been completed before _spdk_bs_free() which would avoid heap-use-after-free. Change-Id: I698521d8d4d8e1d8a7374665d27d6eec6d0b85f5 Signed-off-by: JinYu Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/449517 Reviewed-by: Changpeng Liu Reviewed-by: Shuhei Matsumoto Reviewed-by: Darek Stojaczyk Tested-by: SPDK CI Jenkins --- test/unit/lib/blob/blob.c/blob_ut.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/unit/lib/blob/blob.c/blob_ut.c b/test/unit/lib/blob/blob.c/blob_ut.c index 7a2377723..2d653c96d 100644 --- a/test/unit/lib/blob/blob.c/blob_ut.c +++ b/test/unit/lib/blob/blob.c/blob_ut.c @@ -3539,6 +3539,8 @@ blob_dirty_shutdown(void) free_clusters = spdk_bs_free_cluster_count(g_bs); spdk_blob_close(blob, blob_op_complete, NULL); + poll_threads(); + CU_ASSERT(g_bserrno == 0); blob = NULL; g_blob = NULL; g_blobid = SPDK_BLOBID_INVALID; @@ -3645,6 +3647,8 @@ blob_dirty_shutdown(void) free_clusters = spdk_bs_free_cluster_count(g_bs); spdk_blob_close(blob, blob_op_complete, NULL); + poll_threads(); + CU_ASSERT(g_bserrno == 0); blob = NULL; g_blob = NULL; g_blobid = SPDK_BLOBID_INVALID; @@ -3749,6 +3753,7 @@ blob_dirty_shutdown(void) spdk_blob_close(blob, blob_op_complete, NULL); poll_threads(); + CU_ASSERT(g_bserrno == 0); blob = NULL; g_blob = NULL; g_blobid = SPDK_BLOBID_INVALID; @@ -3769,6 +3774,7 @@ blob_dirty_shutdown(void) spdk_blob_close(blob, blob_op_complete, NULL); poll_threads(); + CU_ASSERT(g_bserrno == 0); blob = NULL; g_blob = NULL; g_blobid = SPDK_BLOBID_INVALID; @@ -3806,6 +3812,8 @@ blob_dirty_shutdown(void) CU_ASSERT(free_clusters == spdk_bs_free_cluster_count(g_bs)); spdk_blob_close(blob, blob_op_complete, NULL); + poll_threads(); + CU_ASSERT(g_bserrno == 0); blob = NULL; g_blob = NULL; g_blobid = SPDK_BLOBID_INVALID;