mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-28 14:00:44 +00:00
hw/block/nvme: fix queue identifer validation
The nvme_check_{sq,cq} functions check if the given queue identifer is valid *and* that the queue exists. Thus, the function return value cannot simply be inverted to check if the identifer is valid and that the queue does *not* exist. Replace the call with an OR'ed version of the checks. Signed-off-by: Gollu Appalanaidu <anaidu.gollu@samsung.com> Signed-off-by: Klaus Jensen <k.jensen@samsung.com> Reviewed-by: Keith Busch <kbusch@kernel.org>
This commit is contained in:
parent
482e97fcfa
commit
843c8f91a7
@ -1143,7 +1143,8 @@ static uint16_t nvme_create_sq(NvmeCtrl *n, NvmeRequest *req)
|
||||
trace_pci_nvme_err_invalid_create_sq_cqid(cqid);
|
||||
return NVME_INVALID_CQID | NVME_DNR;
|
||||
}
|
||||
if (unlikely(!sqid || !nvme_check_sqid(n, sqid))) {
|
||||
if (unlikely(!sqid || sqid > n->params.max_ioqpairs ||
|
||||
n->sq[sqid] != NULL)) {
|
||||
trace_pci_nvme_err_invalid_create_sq_sqid(sqid);
|
||||
return NVME_INVALID_QID | NVME_DNR;
|
||||
}
|
||||
@ -1398,7 +1399,8 @@ static uint16_t nvme_create_cq(NvmeCtrl *n, NvmeRequest *req)
|
||||
trace_pci_nvme_create_cq(prp1, cqid, vector, qsize, qflags,
|
||||
NVME_CQ_FLAGS_IEN(qflags) != 0);
|
||||
|
||||
if (unlikely(!cqid || !nvme_check_cqid(n, cqid))) {
|
||||
if (unlikely(!cqid || cqid > n->params.max_ioqpairs ||
|
||||
n->cq[cqid] != NULL)) {
|
||||
trace_pci_nvme_err_invalid_create_cq_cqid(cqid);
|
||||
return NVME_INVALID_QID | NVME_DNR;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user