mirror of
https://github.com/torvalds/linux
synced 2024-09-30 00:10:51 +00:00
996dc53ac2
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@kernel.org
Fixes:
|
||
---|---|---|
.. | ||
.gitignore | ||
config | ||
iommufd.c | ||
iommufd_fail_nth.c | ||
iommufd_utils.h | ||
Makefile |