]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
hw/nvme: fix invalid check on mcl
authorKlaus Jensen <k.jensen@samsung.com>
Thu, 8 Feb 2024 12:22:48 +0000 (13:22 +0100)
committerMichael Tokarev <mjt@tls.msk.ru>
Wed, 13 Mar 2024 17:35:36 +0000 (20:35 +0300)
The number of logical blocks within a source range is converted into a
1s based number at the time of parsing. However, when verifying the copy
length we add one again, causing the check against MCL to fail in error.

Cc: qemu-stable@nongnu.org
Fixes: 381ab99d8587 ("hw/nvme: check maximum copy length (MCL) for COPY")
Reviewed-by: Minwoo Im <minwoo.im@samsung.com>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
(cherry picked from commit 8c78015a55d84c016da6d5e41b6b5f618ecb25ab)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/nvme/ctrl.c

index 94ef63945725f1e9303c23ade04b077a562b4096..abc0387f2ca8b0924909b62a2c67695402d564d3 100644 (file)
@@ -2855,7 +2855,7 @@ static inline uint16_t nvme_check_copy_mcl(NvmeNamespace *ns,
         uint32_t nlb;
         nvme_copy_source_range_parse(iocb->ranges, idx, iocb->format, NULL,
                                      &nlb, NULL, NULL, NULL);
-        copy_len += nlb + 1;
+        copy_len += nlb;
     }
 
     if (copy_len > ns->id_ns.mcl) {