| From fd5d55dfdcac0fff6cf960664dc5855e10a5572f Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 2 Jan 2020 08:18:07 +0800 |
| Subject: iommu/vt-d: Fix off-by-one in PASID allocation |
| |
| From: Jacob Pan <jacob.jun.pan@linux.intel.com> |
| |
| [ Upstream commit 39d630e332144028f56abba83d94291978e72df1 ] |
| |
| PASID allocator uses IDR which is exclusive for the end of the |
| allocation range. There is no need to decrement pasid_max. |
| |
| Fixes: af39507305fb ("iommu/vt-d: Apply global PASID in SVA") |
| Reported-by: Eric Auger <eric.auger@redhat.com> |
| Signed-off-by: Jacob Pan <jacob.jun.pan@linux.intel.com> |
| Reviewed-by: Eric Auger <eric.auger@redhat.com> |
| Signed-off-by: Lu Baolu <baolu.lu@linux.intel.com> |
| Signed-off-by: Joerg Roedel <jroedel@suse.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| 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 dca88f9fdf29a..ff7a3f9add325 100644 |
| --- a/drivers/iommu/intel-svm.c |
| +++ b/drivers/iommu/intel-svm.c |
| @@ -317,7 +317,7 @@ int intel_svm_bind_mm(struct device *dev, int *pasid, int flags, struct svm_dev_ |
| /* Do not use PASID 0 in caching mode (virtualised IOMMU) */ |
| ret = intel_pasid_alloc_id(svm, |
| !!cap_caching_mode(iommu->cap), |
| - pasid_max - 1, GFP_KERNEL); |
| + pasid_max, GFP_KERNEL); |
| if (ret < 0) { |
| kfree(svm); |
| kfree(sdev); |
| -- |
| 2.20.1 |
| |