iommu/dma: Restore scatterlist offsets correctly
authorRobin Murphy <robin.murphy@arm.com>
Thu, 10 Mar 2016 19:28:12 +0000 (19:28 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 4 May 2016 21:48:45 +0000 (14:48 -0700)
commite05cff2aa31766746f02c932e11b6b2ae357464c
treee4216956325304b037bb72a18ce584618e23c44d
parent99067b8e854211316200b3d6375a664448c2fabd
iommu/dma: Restore scatterlist offsets correctly

commit 07b48ac4bbe527e68cfc555f2b2b206908437141 upstream.

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>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iommu/dma-iommu.c