[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 4/7] hw/nvme: fix verification of number of ruhis
From: |
Klaus Jensen |
Subject: |
[PULL 4/7] hw/nvme: fix verification of number of ruhis |
Date: |
Wed, 28 Jun 2023 11:24:58 +0200 |
From: Klaus Jensen <k.jensen@samsung.com>
Fix a off-by-one error when verifying the number of reclaim unit handle
identifiers specified in fdp.ruhs. To make the fix nicer, move the
verification of the fdp.nruh parameter to an earlier point.
Fixes: 73064edfb864 ("hw/nvme: flexible data placement emulation")
Reviewed-by: Jesper Wendel Devantier <j.devantier@samsung.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
---
hw/nvme/ns.c | 4 +---
hw/nvme/subsys.c | 6 ++++--
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c
index 547c0b154312..050fdaf50fcd 100644
--- a/hw/nvme/ns.c
+++ b/hw/nvme/ns.c
@@ -438,9 +438,7 @@ static bool nvme_ns_init_fdp(NvmeNamespace *ns, Error
**errp)
/* parse the placement handle identifiers */
while ((token = qemu_strsep(&p, ";")) != NULL) {
- ns->fdp.nphs += 1;
- if (ns->fdp.nphs > NVME_FDP_MAXPIDS ||
- ns->fdp.nphs == endgrp->fdp.nruh) {
+ if (ns->fdp.nphs++ == endgrp->fdp.nruh) {
error_setg(errp, "too many placement handles");
free(r);
return false;
diff --git a/hw/nvme/subsys.c b/hw/nvme/subsys.c
index 24ddec860e45..d30bb8bfd5b4 100644
--- a/hw/nvme/subsys.c
+++ b/hw/nvme/subsys.c
@@ -158,8 +158,10 @@ static bool nvme_subsys_setup_fdp(NvmeSubsystem *subsys,
Error **errp)
endgrp->fdp.nrg = subsys->params.fdp.nrg;
- if (!subsys->params.fdp.nruh) {
- error_setg(errp, "fdp.nruh must be non-zero");
+ if (!subsys->params.fdp.nruh ||
+ subsys->params.fdp.nruh > NVME_FDP_MAXPIDS) {
+ error_setg(errp, "fdp.nruh must be non-zero and less than %u",
+ NVME_FDP_MAXPIDS);
return false;
}
--
2.41.0
- [PULL 0/7] hw/nvme updates, Klaus Jensen, 2023/06/28
- [PULL 2/7] hw/nvme: consider COPY command in nvme_aio_err, Klaus Jensen, 2023/06/28
- [PULL 1/7] hw/nvme: add comment for nvme-ns properties, Klaus Jensen, 2023/06/28
- [PULL 3/7] hw/nvme: check maximum copy length (MCL) for COPY, Klaus Jensen, 2023/06/28
- [PULL 4/7] hw/nvme: fix verification of number of ruhis,
Klaus Jensen <=
- [PULL 5/7] hw/nvme: verify uniqueness of reclaim unit handle identifiers, Klaus Jensen, 2023/06/28
- [PULL 6/7] hw/nvme: add placement handle list ranges, Klaus Jensen, 2023/06/28
- [PULL 7/7] docs: update hw/nvme documentation for TP4146, Klaus Jensen, 2023/06/28
- Re: [PULL 0/7] hw/nvme updates, Richard Henderson, 2023/06/28