mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
iommu: Do not revert set_domain for the last gdev
The last gdev is the device that failed the __iommu_device_set_domain(). So, it doesn't need to be reverted, given it's attached to group->domain already. This is not a problem currently, since it's a simply re-attach. However, the core will need to pass in the old domain to __iommu_device_set_domain so the old domain pointers would be inconsistent between a failed device and all its prior succeeded devices, as all the prior devices need to be reverted. Avoid the re-attach for the last gdev, by breaking before the revert. Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Signed-off-by: Nicolin Chen <nicolinc@nvidia.com> Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
c21b34762e
commit
2b33598e66
@ -2403,6 +2403,9 @@ err_revert:
|
||||
*/
|
||||
last_gdev = gdev;
|
||||
for_each_group_device(group, gdev) {
|
||||
/* No need to revert the last gdev that failed to set domain */
|
||||
if (gdev == last_gdev)
|
||||
break;
|
||||
/*
|
||||
* A NULL domain can happen only for first probe, in which case
|
||||
* we leave group->domain as NULL and let release clean
|
||||
@ -2412,8 +2415,6 @@ err_revert:
|
||||
WARN_ON(__iommu_device_set_domain(
|
||||
group, gdev->dev, group->domain,
|
||||
IOMMU_SET_DOMAIN_MUST_SUCCEED));
|
||||
if (gdev == last_gdev)
|
||||
break;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user