diff --git a/drivers/iommu/iommu-sva.c b/drivers/iommu/iommu-sva.c index 00ae7f0e62a11c969dac13c6378d823dfa5e0efe..b666fae6f55c12a284c30d8b010517078c1b39d5 100644 --- a/drivers/iommu/iommu-sva.c +++ b/drivers/iommu/iommu-sva.c @@ -679,9 +679,10 @@ int __iommu_sva_bind_device(struct device *dev, struct mm_struct *mm, } spin_unlock(&iommu_sva_lock); - if (bond) - return -EEXIST; - + if (bond) { + *pasid = bond->io_mm->pasid; + return ret; + } /* Require identical features within an io_mm for now */ if (io_mm && (flags != io_mm->flags)) { io_mm_put(io_mm);