From 2c4b86ff4c1487e47f0e1736b1e6b6d45854ae1b Mon Sep 17 00:00:00 2001 From: Yifan Bian Date: Mon, 10 Jan 2022 07:29:22 +0000 Subject: [PATCH] test/llvm_nvme_fuzz: add NAMESPACE ATTACHMENT and NAMESPACE MANAGEMENT command test cases Change-Id: I48a9a37d54269b2d7038a96dace9aefba334ede8 Signed-off-by: Yifan Bian Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/11011 Community-CI: Broadcom CI Reviewed-by: Changpeng Liu Reviewed-by: Dong Yi Reviewed-by: Tomasz Zawadzki Tested-by: SPDK CI Jenkins --- test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c | 26 +++++++++++++++++++ 1 file changed, 26 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 5efc298ae..cfc597521 100644 --- a/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c +++ b/test/app/fuzz/llvm_nvme_fuzz/llvm_nvme_fuzz.c @@ -208,6 +208,30 @@ fuzz_admin_delete_io_submission_queue_command(struct fuzz_command *cmd) g_data += 2; } +static void +fuzz_admin_namespace_attachment_command(struct fuzz_command *cmd) +{ + memset(&cmd->cmd, 0, sizeof(cmd->cmd)); + cmd->cmd.opc = SPDK_NVME_OPC_NS_ATTACHMENT; + + cmd->cmd.cdw10_bits.raw = 0; + cmd->cmd.cdw10_bits.ns_attach.sel = (g_data[0] >> 4) & 0x0f; + + g_data += 1; +} + +static void +fuzz_admin_namespace_management_command(struct fuzz_command *cmd) +{ + memset(&cmd->cmd, 0, sizeof(cmd->cmd)); + cmd->cmd.opc = SPDK_NVME_OPC_NS_MANAGEMENT; + + cmd->cmd.cdw10_bits.raw = 0; + cmd->cmd.cdw10_bits.ns_manage.sel = (g_data[0] >> 4) & 0x0f; + + g_data += 1; +} + 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 }, @@ -217,6 +241,8 @@ static struct fuzz_type g_fuzzers[] = { { .fn = fuzz_admin_create_io_submission_queue_command, .bytes_per_cmd = 9}, { .fn = fuzz_admin_delete_io_completion_queue_command, .bytes_per_cmd = 2}, { .fn = fuzz_admin_delete_io_submission_queue_command, .bytes_per_cmd = 2}, + { .fn = fuzz_admin_namespace_attachment_command, .bytes_per_cmd = 1}, + { .fn = fuzz_admin_namespace_management_command, .bytes_per_cmd = 1}, { .fn = NULL, .bytes_per_cmd = 0 } };