From: Klaus Jensen Date: Wed, 24 May 2023 09:45:04 +0000 (+0200) Subject: hw/nvme: verify uniqueness of reclaim unit handle identifiers X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=94fa8ca7ee9b6215a5c078f5d424377e5fa61b9c;p=qemu.git hw/nvme: verify uniqueness of reclaim unit handle identifiers Verify that a reclaim unit handle identifier is only specified once in fdp.ruhs. Fixes: 73064edfb864 ("hw/nvme: flexible data placement emulation") Reviewed-by: Jesper Wendel Devantier Signed-off-by: Klaus Jensen --- diff --git a/hw/nvme/ns.c b/hw/nvme/ns.c index 050fdaf50f..c4ea2033bb 100644 --- a/hw/nvme/ns.c +++ b/hw/nvme/ns.c @@ -453,6 +453,17 @@ static bool nvme_ns_init_fdp(NvmeNamespace *ns, Error **errp) free(r); + /* verify that the ruhids are unique */ + for (unsigned int i = 0; i < ns->fdp.nphs; i++) { + for (unsigned int j = i + 1; j < ns->fdp.nphs; j++) { + if (ruhids[i] == ruhids[j]) { + error_setg(errp, "duplicate reclaim unit handle identifier: %u", + ruhids[i]); + return false; + } + } + } + ph = ns->fdp.phs = g_new(uint16_t, ns->fdp.nphs); ruhid = ruhids;