Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9644a106 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "dma-mapping-fast: Fix sg-list length calculation in fast_smmu_unmap_sg()"

parents dc03d0a5 962bad7d
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -345,6 +345,8 @@ static int fast_smmu_map_sg(struct device *dev, struct scatterlist *sg,
	if ((attrs & DMA_ATTR_SKIP_CPU_SYNC) == 0)
		fast_smmu_sync_sg_for_device(dev, sg, nents, dir);

	trace_map_sg(to_msm_iommu_domain(mapping->domain), iova, iova_len,
		     prot);
	return ret;
fail:
	iommu_dma_invalidate_sg(sg, nents);
@@ -376,13 +378,15 @@ static void fast_smmu_unmap_sg(struct device *dev,
			break;
		sg = tmp;
	}
	len = sg_dma_address(sg) + sg_dma_len(sg) - start;
	len = ALIGN(sg_dma_address(sg) + sg_dma_len(sg) - start,
		    FAST_PAGE_SIZE);

	av8l_fast_unmap_public(mapping->pgtbl_ops, start, len);

	spin_lock_irqsave(&mapping->lock, flags);
	__fast_smmu_free_iova(mapping, start, len);
	spin_unlock_irqrestore(&mapping->lock, flags);
	trace_unmap(to_msm_iommu_domain(mapping->domain), start, len, len);
}

static void __fast_smmu_free_pages(struct page **pages, int count)