hw/nvme: fix null pointer access in ruh update
The Reclaim Unit Update operation in I/O Management Receive does not
verify the presence of a configured endurance group prior to accessing
it.
Fix this.
Cc: qemu-stable@nongnu.org
Fixes: 73064edfb8
("hw/nvme: flexible data placement emulation")
Reviewed-by: Jesper Wendel Devantier <j.devantier@samsung.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
This commit is contained in:
parent
6c8f8456cb
commit
3439ba9c5d
@ -4361,7 +4361,13 @@ static uint16_t nvme_io_mgmt_send_ruh_update(NvmeCtrl *n, NvmeRequest *req)
|
||||
uint32_t npid = (cdw10 >> 1) + 1;
|
||||
unsigned int i = 0;
|
||||
g_autofree uint16_t *pids = NULL;
|
||||
uint32_t maxnpid = n->subsys->endgrp.fdp.nrg * n->subsys->endgrp.fdp.nruh;
|
||||
uint32_t maxnpid;
|
||||
|
||||
if (!ns->endgrp || !ns->endgrp->fdp.enabled) {
|
||||
return NVME_FDP_DISABLED | NVME_DNR;
|
||||
}
|
||||
|
||||
maxnpid = n->subsys->endgrp.fdp.nrg * n->subsys->endgrp.fdp.nruh;
|
||||
|
||||
if (unlikely(npid >= MIN(NVME_FDP_MAXPIDS, maxnpid))) {
|
||||
return NVME_INVALID_FIELD | NVME_DNR;
|
||||
|
Loading…
Reference in New Issue
Block a user