@@ -1083,7 +1083,7 @@ static long vfio_sync_unpin(struct vfio_dma *dma, struct vfio_domain *domain,
10831083#define VFIO_IOMMU_TLB_SYNC_MAX 512
10841084
10851085static size_t unmap_unpin_fast (struct vfio_domain * domain ,
1086- struct vfio_dma * dma , dma_addr_t * iova ,
1086+ struct vfio_dma * dma , dma_addr_t iova ,
10871087 size_t len , phys_addr_t phys , long * unlocked ,
10881088 struct list_head * unmapped_list ,
10891089 int * unmapped_cnt ,
@@ -1093,18 +1093,17 @@ static size_t unmap_unpin_fast(struct vfio_domain *domain,
10931093 struct vfio_regions * entry = kzalloc (sizeof (* entry ), GFP_KERNEL );
10941094
10951095 if (entry ) {
1096- unmapped = iommu_unmap_fast (domain -> domain , * iova , len ,
1096+ unmapped = iommu_unmap_fast (domain -> domain , iova , len ,
10971097 iotlb_gather );
10981098
10991099 if (!unmapped ) {
11001100 kfree (entry );
11011101 } else {
1102- entry -> iova = * iova ;
1102+ entry -> iova = iova ;
11031103 entry -> phys = phys ;
11041104 entry -> len = unmapped ;
11051105 list_add_tail (& entry -> list , unmapped_list );
11061106
1107- * iova += unmapped ;
11081107 (* unmapped_cnt )++ ;
11091108 }
11101109 }
@@ -1123,18 +1122,17 @@ static size_t unmap_unpin_fast(struct vfio_domain *domain,
11231122}
11241123
11251124static size_t unmap_unpin_slow (struct vfio_domain * domain ,
1126- struct vfio_dma * dma , dma_addr_t * iova ,
1125+ struct vfio_dma * dma , dma_addr_t iova ,
11271126 size_t len , phys_addr_t phys ,
11281127 long * unlocked )
11291128{
1130- size_t unmapped = iommu_unmap (domain -> domain , * iova , len );
1129+ size_t unmapped = iommu_unmap (domain -> domain , iova , len );
11311130
11321131 if (unmapped ) {
1133- * unlocked += vfio_unpin_pages_remote (dma , * iova ,
1132+ * unlocked += vfio_unpin_pages_remote (dma , iova ,
11341133 phys >> PAGE_SHIFT ,
11351134 unmapped >> PAGE_SHIFT ,
11361135 false);
1137- * iova += unmapped ;
11381136 cond_resched ();
11391137 }
11401138 return unmapped ;
@@ -1197,16 +1195,18 @@ static long vfio_unmap_unpin(struct vfio_iommu *iommu, struct vfio_dma *dma,
11971195 * First, try to use fast unmap/unpin. In case of failure,
11981196 * switch to slow unmap/unpin path.
11991197 */
1200- unmapped = unmap_unpin_fast (domain , dma , & iova , len , phys ,
1198+ unmapped = unmap_unpin_fast (domain , dma , iova , len , phys ,
12011199 & unlocked , & unmapped_region_list ,
12021200 & unmapped_region_cnt ,
12031201 & iotlb_gather );
12041202 if (!unmapped ) {
1205- unmapped = unmap_unpin_slow (domain , dma , & iova , len ,
1203+ unmapped = unmap_unpin_slow (domain , dma , iova , len ,
12061204 phys , & unlocked );
12071205 if (WARN_ON (!unmapped ))
12081206 break ;
12091207 }
1208+
1209+ iova += unmapped ;
12101210 }
12111211
12121212 dma -> iommu_mapped = false;
0 commit comments