git: 62d47feceba8 - main - bhyve nvme: Fix Namespace Specific Set Features

From: Chuck Tuffli <chuck_at_FreeBSD.org>
Date: Sat, 29 Jan 2022 23:15:38 UTC
The branch main has been updated by chuck:

URL: https://cgit.FreeBSD.org/src/commit/?id=62d47feceba8d457f5a28691cfbed5b90ede30b6

commit 62d47feceba8d457f5a28691cfbed5b90ede30b6
Author:     Chuck Tuffli <chuck@FreeBSD.org>
AuthorDate: 2022-01-30 07:06:23 +0000
Commit:     Chuck Tuffli <chuck@FreeBSD.org>
CommitDate: 2022-01-30 07:06:23 +0000

    bhyve nvme: Fix Namespace Specific Set Features
    
    Return an error if the feature specified in Set Features is Namespace
    specific but the Namespace ID uses the Global Namespace tag.
    
    Fixes UNH Test 1.2.7
    
    Reviewed by:    imp, allanjude
    Tested by:      jason@tubnor.net
    MFC after:      1 month
    Differential Revision:  https://reviews.freebsd.org/D33566
---
 usr.sbin/bhyve/pci_nvme.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/usr.sbin/bhyve/pci_nvme.c b/usr.sbin/bhyve/pci_nvme.c
index 09425b1cace3..e5def8ef8165 100644
--- a/usr.sbin/bhyve/pci_nvme.c
+++ b/usr.sbin/bhyve/pci_nvme.c
@@ -1660,6 +1660,11 @@ nvme_opc_set_features(struct pci_nvme_softc *sc, struct nvme_command *command,
 	}
 	feat = &sc->feat[fid];
 
+	if (feat->namespace_specific && (nsid == NVME_GLOBAL_NAMESPACE_TAG)) {
+		pci_nvme_status_genc(&compl->status, NVME_SC_INVALID_FIELD);
+		return (1);
+	}
+
 	if (!feat->namespace_specific &&
 	    !((nsid == 0) || (nsid == NVME_GLOBAL_NAMESPACE_TAG))) {
 		pci_nvme_status_tc(&compl->status, NVME_SCT_COMMAND_SPECIFIC,