When running vfio_dma_mapping_mmio_test in MODE_IOMMUFD_COMPAT* mode, the test crashes with "Test terminated unexpectedly by signal 11".
The crash happens because: 1. __iommu_map() fails as expected for MMIO mappings in iommufd. Consequently, the region.link remains uninitialized. 2. The test proceeds to call __iommu_unmap(). 3. In iommufd compat mode, the kernel returns 0 for unmapping a non-existent range. 4. __iommu_unmap() calls list_del_init(®ion->link), dereferencing the uninitialized pointer. Fix this by explicitly initializing region.link using INIT_LIST_HEAD. Signed-off-by: Yi Lai <[email protected]> --- tools/testing/selftests/vfio/vfio_dma_mapping_mmio_test.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/testing/selftests/vfio/vfio_dma_mapping_mmio_test.c b/tools/testing/selftests/vfio/vfio_dma_mapping_mmio_test.c index 957a89ce7b3a..4f7ecdca0215 100644 --- a/tools/testing/selftests/vfio/vfio_dma_mapping_mmio_test.c +++ b/tools/testing/selftests/vfio/vfio_dma_mapping_mmio_test.c @@ -88,6 +88,7 @@ static void do_mmio_map_test(struct iommu *iommu, .vaddr = vaddr, .size = size, .iova = iova_allocator_alloc(iova_allocator, size), + .link = LIST_HEAD_INIT(region.link), }; /* -- 2.43.0

