]> www.infradead.org Git - nvme.git/commitdiff
nvmet: Identify-Active Namespace ID List command should reject invalid nsid nvme-6.11 nvme-6.11-2024-09-05
authorMaurizio Lombardi <mlombard@redhat.com>
Thu, 29 Aug 2024 09:52:14 +0000 (11:52 +0200)
committerKeith Busch <kbusch@kernel.org>
Tue, 3 Sep 2024 17:05:40 +0000 (10:05 -0700)
nsid values of 0xFFFFFFFE and 0XFFFFFFFF should be rejected with
a status code of "Invalid Namespace or Format".
See NVMe Base Specification, Active Namespace ID list (CNS 02h).

Fixes: a07b4970f464 ("nvmet: add a generic NVMe target")
Signed-off-by: Maurizio Lombardi <mlombard@redhat.com>
Reviewed-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/target/admin-cmd.c

index f7e1156ac7ecc8aafc5a2bcfc526062e8bff3efa..85006b2df8ae082a4ee658ce33bc920ae65d93dd 100644 (file)
@@ -587,6 +587,16 @@ static void nvmet_execute_identify_nslist(struct nvmet_req *req)
        u16 status = 0;
        int i = 0;
 
+       /*
+        * NSID values 0xFFFFFFFE and NVME_NSID_ALL are invalid
+        * See NVMe Base Specification, Active Namespace ID list (CNS 02h).
+        */
+       if (min_nsid == 0xFFFFFFFE || min_nsid == NVME_NSID_ALL) {
+               req->error_loc = offsetof(struct nvme_identify, nsid);
+               status = NVME_SC_INVALID_NS | NVME_STATUS_DNR;
+               goto out;
+       }
+
        list = kzalloc(buf_size, GFP_KERNEL);
        if (!list) {
                status = NVME_SC_INTERNAL;