]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
hw/nvme: fix memory leak in nvme_dsm
authorKlaus Jensen <k.jensen@samsung.com>
Tue, 11 Apr 2023 18:54:44 +0000 (20:54 +0200)
committerMichael Tokarev <mjt@tls.msk.ru>
Thu, 13 Apr 2023 15:28:32 +0000 (18:28 +0300)
The iocb (and the allocated memory to hold LBA ranges) leaks if reading
the LBA ranges fails.

Fix this by adding a free and an unref of the iocb.

Reported-by: Coverity (CID 1508281)
Fixes: d7d1474fd85d ("hw/nvme: reimplement dsm to allow cancellation")
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
(cherry picked from commit 4b32319cdacd99be983e1a74128289ef52c5964e)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/nvme/ctrl.c

index 1d3e0584520aa30bf16773c4b625f9cf485e1395..749a6938dd7a96f9dc5dec2be1eb208cb4b3c129 100644 (file)
@@ -2491,6 +2491,9 @@ static uint16_t nvme_dsm(NvmeCtrl *n, NvmeRequest *req)
         status = nvme_h2c(n, (uint8_t *)iocb->range, sizeof(NvmeDsmRange) * nr,
                           req);
         if (status) {
+            g_free(iocb->range);
+            qemu_aio_unref(iocb);
+
             return status;
         }