> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Thursday, August 22, 2024 10:46 PM > > This results in passing 0 or just IOMMU_CACHE to iommu_map(). Most of > the page table formats don't like this: > > amdv1 - -EINVAL > armv7s - returns 0, doesn't update mapped > arm-lpae - returns 0 doesn't update mapped > dart - returns 0, doesn't update mapped > VT-D - returns -EINVAL > > Unfortunately the three formats that return 0 cause serious problems: > > - Returning ret = but not uppdating mapped from domain->map_pages() > causes an infinite loop in __iommu_map() > > - Not writing ioptes means that VFIO/iommufd have no way to recover them > and we will have memory leaks and worse during unmap > > Since almost nothing can support this, and it is a useless thing to do, > block it early in iommufd. > > Cc: stable@xxxxxxxxxx > Fixes: aad37e71d5c4 ("iommufd: IOCTLs for the io_pagetable") > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>