From d11edb7ac8d0ce9fc557af80ee97fd33cc274d08 Mon Sep 17 00:00:00 2001 From: Yifan Bian Date: Thu, 21 Apr 2022 04:01:33 +0000 Subject: [PATCH] test/llvm_nvme_fuzz: add COMPARE command test case Change-Id: Id0e680a04a566486e4f13f7d0dcb73cbc27ed4dd Signed-off-by: Yifan Bian Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12322 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Dong Yi Reviewed-by: Changpeng Liu Reviewed-by: Tomasz Zawadzki --- test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c b/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c index 910312253..45c867fd7 100644 --- a/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c +++ b/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c @@ -452,6 +452,26 @@ fuzz_nvm_reservation_report_command(struct fuzz_command *cmd) g_data += 5; } +static void +fuzz_nvm_compare_command(struct fuzz_command *cmd) +{ + memset(&cmd->cmd, 0, sizeof(cmd->cmd)); + cmd->cmd.opc = SPDK_NVME_OPC_COMPARE; + + cmd->cmd.cdw10 = (g_data[0] << 24) + (g_data[1] << 16) + + (g_data[2] << 8) + g_data[3]; + cmd->cmd.cdw11 = (g_data[4] << 24) + (g_data[5] << 16) + + (g_data[6] << 8) + g_data[7]; + cmd->cmd.cdw12 = (g_data[8] << 24) + (g_data[9] << 16) + + (g_data[10] << 8) + g_data[11]; + cmd->cmd.cdw14 = (g_data[12] << 24) + (g_data[13] << 16) + + (g_data[14] << 8) + g_data[15]; + cmd->cmd.cdw15 = (g_data[16] << 24) + (g_data[17] << 16) + + (g_data[18] << 8) + g_data[19]; + + g_data += 20; +} + static struct fuzz_type g_fuzzers[] = { { .fn = fuzz_admin_command, .bytes_per_cmd = sizeof(struct spdk_nvme_cmd), .is_admin = true}, { .fn = fuzz_admin_get_log_page_command, .bytes_per_cmd = 6, .is_admin = true}, @@ -475,6 +495,7 @@ static struct fuzz_type g_fuzzers[] = { { .fn = fuzz_nvm_reservation_release_command, .bytes_per_cmd = 10, .is_admin = false}, { .fn = fuzz_nvm_reservation_register_command, .bytes_per_cmd = 17, .is_admin = false}, { .fn = fuzz_nvm_reservation_report_command, .bytes_per_cmd = 5, .is_admin = false}, + { .fn = fuzz_nvm_compare_command, .bytes_per_cmd = 20, .is_admin = false}, { .fn = NULL, .bytes_per_cmd = 0, .is_admin = 0} };