RE: [PATCH] nvmet: return Invalid Field error on set features cmd fid 07h
From: Engel, Amit <hidden>
Date: 2020-02-28 12:53:49
Sure, I just uploaded a fixed patch Thanks Amit Engel -----Original Message----- From: Sagi Grimberg <sagi@grimberg.me> Sent: Friday, February 28, 2020 1:16 AM To: Engel, Amit; linux-nvme@lists.infradead.org Subject: Re: [PATCH] nvmet: return Invalid Field error on set features cmd fid 07h [EXTERNAL EMAIL]
quoted hunk ↗ jump to hunk
From: Amit Engel <redacted> If the value specified in NCQR and NSQR fields (0's based) is 65,535 the controller should return an error of Invalid field in command Signed-off-by: Amit Engel <redacted> --- drivers/nvme/target/admin-cmd.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-)diff --git a/drivers/nvme/target/admin-cmd.cb/drivers/nvme/target/admin-cmd.c index 19f949570625..f76b44768100 100644--- a/drivers/nvme/target/admin-cmd.c +++ b/drivers/nvme/target/admin-cmd.c@@ -733,16 +733,25 @@ static void nvmet_execute_set_features(struct nvmet_req *req) { struct nvmet_subsys *subsys = req->sq->ctrl->subsys; u32 cdw10 = le32_to_cpu(req->cmd->common.cdw10); + u32 cdw11 = le32_to_cpu(req->cmd->common.cdw11); u16 status = 0; if (!nvmet_check_data_len(req, 0)) return; switch (cdw10 & 0xff) { - case NVME_FEAT_NUM_QUEUES: + case NVME_FEAT_NUM_QUEUES: { + u16 ncqr = (cdw11 >> 16) & 0xffff; + u16 nsqr = cdw11 & 0xffff; + + if (ncqr == 0xffff || nsqr == 0xffff) { + status = NVME_SC_INVALID_FIELD | NVME_SC_DNR; + break; + } nvmet_set_result(req, (subsys->max_qid - 1) | ((subsys->max_qid - 1) << 16)); break; + }
I'd avoid parenthesis in the switch-case statement, just declare them on top and assign them here. _______________________________________________ linux-nvme mailing list linux-nvme@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-nvme