mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-09-22 09:34:56 +02:00
vduse: take out allocations from vduse_dev_alloc_coherent
[ Upstream commit489d765206] The function vduse_dev_alloc_coherent will be called under rwlock in next patches. Make it out of the lock to avoid increasing its fail rate. Acked-by: Jason Wang <jasowang@redhat.com> Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <20260119143306.1818855-10-eperezma@redhat.com> Stable-dep-of:9c15238034("VDUSE: avoid leaking information to userspace") Signed-off-by: Sasha Levin <sashal@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
db5c554b36
commit
7764e9c727
@@ -526,7 +526,6 @@ void vduse_domain_free_coherent(struct vduse_iova_domain *domain, size_t size,
|
||||
struct iova_domain *iovad = &domain->consistent_iovad;
|
||||
struct vhost_iotlb_map *map;
|
||||
struct vdpa_map_file *map_file;
|
||||
phys_addr_t pa;
|
||||
|
||||
spin_lock(&domain->iotlb_lock);
|
||||
map = vhost_iotlb_itree_first(domain->iotlb, (u64)dma_addr,
|
||||
@@ -538,12 +537,10 @@ void vduse_domain_free_coherent(struct vduse_iova_domain *domain, size_t size,
|
||||
map_file = (struct vdpa_map_file *)map->opaque;
|
||||
fput(map_file->file);
|
||||
kfree(map_file);
|
||||
pa = map->addr;
|
||||
vhost_iotlb_map_free(domain->iotlb, map);
|
||||
spin_unlock(&domain->iotlb_lock);
|
||||
|
||||
vduse_domain_free_iova(iovad, dma_addr, size);
|
||||
free_pages_exact(phys_to_virt(pa), size);
|
||||
}
|
||||
|
||||
static vm_fault_t vduse_domain_mmap_fault(struct vm_fault *vmf)
|
||||
|
||||
@@ -961,6 +961,7 @@ static void vduse_dev_free_coherent(union virtio_map token, size_t size,
|
||||
domain = vdev->domain;
|
||||
|
||||
vduse_domain_free_coherent(domain, size, dma_addr, attrs);
|
||||
free_pages_exact(vaddr, size);
|
||||
}
|
||||
|
||||
static bool vduse_dev_need_sync(union virtio_map token, dma_addr_t dma_addr)
|
||||
|
||||
Reference in New Issue
Block a user