From: Jason Wang jasowang@redhat.com
[ 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 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/vdpa/vdpa_sim/vdpa_sim.c b/drivers/vdpa/vdpa_sim/vdpa_sim.c index 1701e0623408..6489f44bca1a 100644 --- a/drivers/vdpa/vdpa_sim/vdpa_sim.c +++ b/drivers/vdpa/vdpa_sim/vdpa_sim.c @@ -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); }