mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 22:09:30 +02:00
powerpc/iommu: Fix the overflow validation in iommu_tce_check_ioba
The commitb1af23d836("KVM: PPC: iommu: Unify TCE checking") unified IOBA parameter checking across KVM and VFIO into iommu_tce_check_ioba(). While doing so, the passed in argument npages is ignored and constant value '1' is used leaving out a possible overflow as the callers can legitimately be using npages > 1 for H_STUFF_TCE or H_PUT_TCE_INDIRECT cases. Fix this by accounting for 'npages', checking for arithmetic overflow, and verifying that the entire requested range (ioba - offset + npages) does not exceed the table capacity 'size'. Fixes:b1af23d836("KVM: PPC: iommu: Unify TCE checking") Reviewed-by: Ritesh Harjani (IBM) <ritesh.list@gmail.com> Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com> Signed-off-by: Shivaprasad G Bhat <sbhat@linux.ibm.com> Signed-off-by: Gautam Menghani <gautam@linux.ibm.com> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
This commit is contained in:
committed by
Madhavan Srinivasan
parent
0a416ee20b
commit
0b271f7d7f
@@ -1076,7 +1076,7 @@ int iommu_tce_check_ioba(unsigned long page_shift,
|
||||
if (ioba < offset)
|
||||
return -EINVAL;
|
||||
|
||||
if ((ioba + 1) > (offset + size))
|
||||
if ((ioba + npages < ioba) || (ioba - offset + npages > size))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user