Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 31 Jul 2021 00:21:19 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: 90a63b91ec09 - stable/12 - Add KASSERT to ensure sane nsid.
Message-ID:  <202107310021.16V0LJSM048844@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/12 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=90a63b91ec092e94f97d87f0f187cf1d393ee4a0

commit 90a63b91ec092e94f97d87f0f187cf1d393ee4a0
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2020-05-01 21:24:19 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2021-07-31 00:02:51 +0000

    Add KASSERT to ensure sane nsid.
    
    All callers are currently filtering bad nsid to this function,
    however, we'll have undefined behavior if that's not true. Add the
    KASSERT to prevent that.
    
    (cherry picked from commit d5cc572ce6009993fb3c4f6c887194b9ec3c9815)
---
 sys/dev/nvme/nvme.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/sys/dev/nvme/nvme.c b/sys/dev/nvme/nvme.c
index 97f35afb36da..843aa80bb4fb 100644
--- a/sys/dev/nvme/nvme.c
+++ b/sys/dev/nvme/nvme.c
@@ -291,13 +291,18 @@ void
 nvme_notify_ns(struct nvme_controller *ctrlr, int nsid)
 {
 	struct nvme_consumer	*cons;
-	struct nvme_namespace	*ns = &ctrlr->ns[nsid - 1];
+	struct nvme_namespace	*ns;
 	void			*ctrlr_cookie;
 	uint32_t		i;
 
+	KASSERT(nsid <= NVME_MAX_NAMESPACES,
+	    ("%s: Namespace notification to nsid %d exceeds range\n",
+		device_get_nameunit(ctrlr->dev), nsid));
+
 	if (!ctrlr->is_initialized)
 		return;
 
+	ns = &ctrlr->ns[nsid - 1];
 	for (i = 0; i < NVME_MAX_CONSUMERS; i++) {
 		cons = &nvme_consumer[i];
 		if (cons->id != INVALID_CONSUMER_ID && cons->ns_fn != NULL &&



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202107310021.16V0LJSM048844>