]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
iommu: Handle default domain attach failure
authorRobin Murphy <robin.murphy@arm.com>
Mon, 16 Jan 2017 12:58:07 +0000 (12:58 +0000)
committerJoerg Roedel <jroedel@suse.de>
Tue, 17 Jan 2017 15:49:24 +0000 (16:49 +0100)
commit797a8b4d768c58caac58ee3e8cb36a164d1b7751
tree6f7bdf319d1bf50bbfef970167755d464eabb499
parenteba484b51b8c1346759785d40fa4d6ec5590b705
iommu: Handle default domain attach failure

We wouldn't normally expect ops->attach_dev() to fail, but on IOMMUs
with limited hardware resources, or generally misconfigured systems,
it is certainly possible. We report failure correctly from the external
iommu_attach_device() interface, but do not do so in iommu_group_add()
when attaching to the default domain. The result of failure there is
that the device, group and domain all get left in a broken,
part-configured state which leads to weird errors and misbehaviour down
the line when IOMMU API calls sort-of-but-don't-quite work.

Check the return value of __iommu_attach_device() on the default domain,
and refactor the error handling paths to cope with its failure and clean
up correctly in such cases.

Fixes: e39cb8a3aa98 ("iommu: Make sure a device is always attached to a domain")
Reported-by: Punit Agrawal <punit.agrawal@arm.com>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/iommu.c