Thread (3 messages) 3 messages, 2 authors, 2020-02-28

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.c 
b/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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help