]> git.baikalelectronics.ru Git - kernel.git/commit
iommu/dma: Don't touch invalid iova_domain members
authorRobin Murphy <robin.murphy@arm.com>
Mon, 15 May 2017 15:01:30 +0000 (16:01 +0100)
committerJoerg Roedel <jroedel@suse.de>
Wed, 17 May 2017 12:35:29 +0000 (14:35 +0200)
commit236462f777033f50c99fc99043e5d1f0fbcb6484
tree8e06a8f429c7d1f362bbfb7c2011a2b0c3773c7f
parent6a0fa58cdd92da9a8e6fa4e621cabd91974091b3
iommu/dma: Don't touch invalid iova_domain members

When __iommu_dma_map() and iommu_dma_free_iova() are called from
iommu_dma_get_msi_page(), various iova_*() helpers are still invoked in
the process, whcih is unwise since they access a different member of the
union (the iova_domain) from that which was last written, and there's no
guarantee that sensible values will result anyway.

CLean up the code paths that are valid for an MSI cookie to ensure we
only do iova_domain-specific things when we're actually dealing with one.

Fixes: 6ac3265e7e92 ("iommu/dma: Clean up MSI IOVA allocation")
Reported-by: Nate Watterson <nwatters@codeaurora.org>
Tested-by: Shanker Donthineni <shankerd@codeaurora.org>
Tested-by: Bharat Bhushan <bharat.bhushan@nxp.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/dma-iommu.c