From dd6a8a80df2eb56e6c9676ae0fa08aa5e00a0ea5 Mon Sep 17 00:00:00 2001 From: Yifan Bian Date: Wed, 5 Jan 2022 05:10:53 +0000 Subject: [PATCH] test/llvm_nvme_fuzz: add CREATE I/O SUBMISSION QUEUE command test case Change-Id: I4353543acf8662b14f35d36b30b2eb1fad88a871 Signed-off-by: Yifan Bian Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/10970 Community-CI: Broadcom CI Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Tomasz Zawadzki --- test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c | 22 +++++++++++++++++++ 1 file changed, 22 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 a9c1833a5..c84752008 100644 --- a/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c +++ b/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c @@ -163,12 +163,34 @@ fuzz_admin_create_io_completion_queue_command(struct fuzz_command *cmd) g_data += 7; } +static void +fuzz_admin_create_io_submission_queue_command(struct fuzz_command *cmd) +{ + memset(&cmd->cmd, 0, sizeof(cmd->cmd)); + cmd->cmd.opc = SPDK_NVME_OPC_CREATE_IO_SQ; + + cmd->cmd.cdw10_bits.raw = 0; + cmd->cmd.cdw10_bits.create_io_q.qid = (g_data[0] << 8) + g_data[1]; + cmd->cmd.cdw10_bits.create_io_q.qsize = (g_data[2] << 8) + g_data[3]; + + cmd->cmd.cdw11_bits.raw = 0; + cmd->cmd.cdw11_bits.create_io_sq.cqid = (g_data[4] << 8) + g_data[5]; + cmd->cmd.cdw11_bits.create_io_sq.qprio = (g_data[6] >> 6) & 0x03; + cmd->cmd.cdw11_bits.create_io_sq.pc = (g_data[6] >> 5) & 0x01; + + /* NVM Set Identifier */ + cmd->cmd.cdw12 = (g_data[7] << 8) + g_data[8]; + + g_data += 9; +} + static struct fuzz_type g_fuzzers[] = { { .fn = fuzz_admin_command, .bytes_per_cmd = sizeof(struct spdk_nvme_cmd) }, { .fn = fuzz_admin_get_log_page_command, .bytes_per_cmd = 6 }, { .fn = fuzz_admin_identify_command, .bytes_per_cmd = 7 }, { .fn = fuzz_admin_abort_command, .bytes_per_cmd = 4}, { .fn = fuzz_admin_create_io_completion_queue_command, .bytes_per_cmd = 7}, + { .fn = fuzz_admin_create_io_submission_queue_command, .bytes_per_cmd = 9}, { .fn = NULL, .bytes_per_cmd = 0 } };