Ping! regards, dan carpenter On Thu, Apr 06, 2023 at 11:55:31AM +0300, Dan Carpenter wrote: > The ida_alloc_range() function returns negative error codes on error. > On success it returns values in the min to max range (inclusive). It > never returns more then INT_MAX even if "max" is higher. It never > returns values in the 0 to (min - 1) range. > > The bug is that "min" is an unsigned int so negative error codes will > be promoted to high positive values errors treated as success. > > Fixes: 1a14bf0fc7ed ("iommu/sva: Use GFP_KERNEL for pasid allocation") > Signed-off-by: Dan Carpenter <error27@xxxxxxxxx> > --- > drivers/iommu/iommu-sva.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/iommu-sva.c b/drivers/iommu/iommu-sva.c > index c4ab3c457fbc..6e4f1ba1c148 100644 > --- a/drivers/iommu/iommu-sva.c > +++ b/drivers/iommu/iommu-sva.c > @@ -33,8 +33,9 @@ static int iommu_sva_alloc_pasid(struct mm_struct *mm, ioasid_t min, ioasid_t ma > } > > ret = ida_alloc_range(&iommu_global_pasid_ida, min, max, GFP_KERNEL); > - if (ret < min) > + if (ret < 0) > goto out; > + > mm->pasid = ret; > ret = 0; > out: > -- > 2.39.1