Explorar o código

iommu/vt-d: Clear pasid table entry when memory unbound

In intel_svm_unbind_mm(), pasid table entry must be cleared during
svm free. Otherwise, hardware may be set up with a wild pointer.

Suggested-by: Ashok Raj <ashok.raj@intel.com>
Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Lu Baolu %!s(int64=7) %!d(string=hai) anos
pai
achega
4fa064b26c
Modificáronse 1 ficheiros con 2 adicións e 0 borrados
  1. 2 0
      drivers/iommu/intel-svm.c

+ 2 - 0
drivers/iommu/intel-svm.c

@@ -458,6 +458,8 @@ int intel_svm_unbind_mm(struct device *dev, int pasid)
 				kfree_rcu(sdev, rcu);
 
 				if (list_empty(&svm->devs)) {
+					svm->iommu->pasid_table[svm->pasid].val = 0;
+					wmb();
 
 					idr_remove(&svm->iommu->pasid_idr, svm->pasid);
 					if (svm->mm)