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>
This commit is contained in:
parent
973b546451
commit
4fa064b26c
|
@ -458,6 +458,8 @@ int intel_svm_unbind_mm(struct device *dev, int pasid)
|
||||||
kfree_rcu(sdev, rcu);
|
kfree_rcu(sdev, rcu);
|
||||||
|
|
||||||
if (list_empty(&svm->devs)) {
|
if (list_empty(&svm->devs)) {
|
||||||
|
svm->iommu->pasid_table[svm->pasid].val = 0;
|
||||||
|
wmb();
|
||||||
|
|
||||||
idr_remove(&svm->iommu->pasid_idr, svm->pasid);
|
idr_remove(&svm->iommu->pasid_idr, svm->pasid);
|
||||||
if (svm->mm)
|
if (svm->mm)
|
||||||
|
|
Loading…
Reference in New Issue