]> git.hungrycats.org Git - linux/commitdiff
vdpasim: fix memory leak when freeing IOTLBs
authorJason Wang <jasowang@redhat.com>
Tue, 13 Dec 2022 09:07:17 +0000 (17:07 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2023 11:00:34 +0000 (12:00 +0100)
[ Upstream commit 0b7a04a30eef20e6b24926a45c0ce7906ae85bd6 ]

After commit bda324fd037a ("vdpasim: control virtqueue support"),
vdpasim->iommu became an array of IOTLB, so we should clean the
mappings of each free one by one instead of just deleting the ranges
in the first IOTLB which may leak maps.

Fixes: bda324fd037a ("vdpasim: control virtqueue support")
Cc: Gautam Dawar <gautam.dawar@xilinx.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Message-Id: <20221213090717.61529-1-jasowang@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Gautam Dawar <gautam.dawar@amd.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/vdpa/vdpa_sim/vdpa_sim.c

index 1701e06234081b3cba60eda92583e3f2c0444cda..6489f44bca1af5d5e3f2296561b4940124143d44 100644 (file)
@@ -679,7 +679,9 @@ static void vdpasim_free(struct vdpa_device *vdpa)
        }
 
        kvfree(vdpasim->buffer);
-       vhost_iotlb_free(vdpasim->iommu);
+       for (i = 0; i < vdpasim->dev_attr.nas; i++)
+               vhost_iotlb_reset(&vdpasim->iommu[i]);
+       kfree(vdpasim->iommu);
        kfree(vdpasim->vqs);
        kfree(vdpasim->config);
 }