iommu/dma: Restore scatterlist offsets correctly
authorRobin Murphy <robin.murphy@arm.com>
Thu, 10 Mar 2016 19:28:12 +0000 (19:28 +0000)
committerJoerg Roedel <jroedel@suse.de>
Tue, 5 Apr 2016 13:14:05 +0000 (15:14 +0200)
commit07b48ac4bbe527e68cfc555f2b2b206908437141
treebfae71ae8421a541afd2f453052f9ce9e48e8671
parentb70bb984489363aadd5ccc94d919629d9e264d36
iommu/dma: Restore scatterlist offsets correctly

With the change to stashing just the IOVA-page-aligned remainder of the
CPU-page offset rather than the whole thing, the failure path in
__invalidate_sg() also needs tweaking to account for that in the case of
differing page sizes where the two offsets may not be equivalent.
Similarly in __finalise_sg(), lest the architecture-specific wrappers
later get the wrong address for cache maintenance on sync or unmap.

Fixes: 164afb1d85b8 ("iommu/dma: Use correct offset in map_sg")
Reported-by: Magnus Damm <damm+renesas@opensource.se>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Cc: stable@ver.kernel.org # v4.4+
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dma-iommu.c