Messages in this thread | | | Subject | Re: [PATCH 1/3] iommu/vt-d: Missing checks for pasid tables if allocation fails | From | Lu Baolu <> | Date | Fri, 20 Oct 2017 08:48:55 +0800 |
| |
Hi Yi,
On 10/19/2017 02:40 PM, Liu, Yi L wrote: > >> -----Original Message----- >> From: iommu-bounces@lists.linux-foundation.org [mailto:iommu- >> bounces@lists.linux-foundation.org] On Behalf Of Lu Baolu >> Sent: Thursday, October 19, 2017 8:39 AM >> To: joro@8bytes.org; dwmw2@infradead.org >> Cc: iommu@lists.linux-foundation.org; linux-kernel@vger.kernel.org >> Subject: [PATCH 1/3] iommu/vt-d: Missing checks for pasid tables if allocation fails >> >> intel_svm_alloc_pasid_tables() might return an error but never be checked by the >> callers. Later when intel_svm_bind_mm() is called, there are no checks for valid pasid >> tables before enabling them. >> >> Signed-off-by: Ashok Raj <ashok.raj@intel.com> >> Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> >> --- >> drivers/iommu/intel-svm.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/drivers/iommu/intel-svm.c b/drivers/iommu/intel-svm.c index >> f6697e5..43280ca 100644 >> --- a/drivers/iommu/intel-svm.c >> +++ b/drivers/iommu/intel-svm.c >> @@ -292,7 +292,7 @@ int intel_svm_bind_mm(struct device *dev, int *pasid, int >> flags, struct svm_dev_ >> int pasid_max; >> int ret; >> >> - if (WARN_ON(!iommu)) >> + if (WARN_ON(!iommu || !iommu->pasid_table)) > [Liu, Yi L] Hi Baolu, I guess there also need a check to iommu->ecap , see if the pasid bit > is reported. thoughts? >
If pasid bit is not set in ecap register, iommu->pasid_table won't be set.
We did this by:
if (pasid_enabled(iommu)) intel_svm_alloc_pasid_tables(iommu);
Best regards, Lu Baolu
| |