From: Pranjal Shrivastava Date: Mon, 30 Mar 2026 09:26:09 +0000 (+0000) Subject: iommufd/selftest: Remove MOCK_IOMMUPT_AMDV1 format X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8c4dc1a5025f5c35beef43fbf8ce50bb7e93b762;p=thirdparty%2Fkernel%2Flinux.git iommufd/selftest: Remove MOCK_IOMMUPT_AMDV1 format syzbot found that allocating a mock domain with AMDV1 format could cause a WARN_ON because the selftest enabled DYNAMIC_TOP without providing the required driver_ops. The AMDV1 format in the selftest was a placeholder and was not actually used by any of the existing selftests. Instead of adding dummy driver_ops to satisfy the requirements of a format we don't currently test, remove the AMDV1 format option from the selftest. The MOCK_IOMMUPT_DEFAULT and MOCK_IOMMUPT_HUGE formats are unaffected as they use the amdv1_mock variant which does not enable DYNAMIC_TOP. Fixes: dcd6a011a8d5 ("iommupt: Add map_pages op") Link: https://patch.msgid.link/r/20260330092609.2659235-1-praan@google.com Reported-by: syzbot+453eb7add07c3767adab@syzkaller.appspotmail.com Closes: https://lore.kernel.org/all/69c1d50b.a70a0220.3cae05.0001.GAE@google.com/ Signed-off-by: Pranjal Shrivastava Signed-off-by: Jason Gunthorpe --- diff --git a/drivers/iommu/iommufd/iommufd_test.h b/drivers/iommu/iommufd/iommufd_test.h index 73e73e1ec158..52b78cbcc920 100644 --- a/drivers/iommu/iommufd/iommufd_test.h +++ b/drivers/iommu/iommufd/iommufd_test.h @@ -36,7 +36,6 @@ enum { enum { MOCK_IOMMUPT_DEFAULT = 0, MOCK_IOMMUPT_HUGE, - MOCK_IOMMUPT_AMDV1, }; /* These values are true for MOCK_IOMMUPT_DEFAULT */ diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selftest.c index 83e2215e7800..2a7f037060ca 100644 --- a/drivers/iommu/iommufd/selftest.c +++ b/drivers/iommu/iommufd/selftest.c @@ -421,19 +421,6 @@ static const struct iommu_dirty_ops amdv1_mock_dirty_ops = { .set_dirty_tracking = mock_domain_set_dirty_tracking, }; -static const struct iommu_domain_ops amdv1_ops = { - IOMMU_PT_DOMAIN_OPS(amdv1), - .free = mock_domain_free, - .attach_dev = mock_domain_nop_attach, - .set_dev_pasid = mock_domain_set_dev_pasid_nop, - .iotlb_sync = &mock_iotlb_sync, -}; - -static const struct iommu_dirty_ops amdv1_dirty_ops = { - IOMMU_PT_DIRTY_OPS(amdv1), - .set_dirty_tracking = mock_domain_set_dirty_tracking, -}; - static struct mock_iommu_domain * mock_domain_alloc_pgtable(struct device *dev, const struct iommu_hwpt_selftest *user_cfg, u32 flags) @@ -477,24 +464,6 @@ mock_domain_alloc_pgtable(struct device *dev, mock->domain.dirty_ops = &amdv1_mock_dirty_ops; break; } - - case MOCK_IOMMUPT_AMDV1: { - struct pt_iommu_amdv1_cfg cfg = {}; - - cfg.common.hw_max_vasz_lg2 = 64; - cfg.common.hw_max_oasz_lg2 = 52; - cfg.common.features = BIT(PT_FEAT_DYNAMIC_TOP) | - BIT(PT_FEAT_AMDV1_ENCRYPT_TABLES) | - BIT(PT_FEAT_AMDV1_FORCE_COHERENCE); - cfg.starting_level = 2; - mock->domain.ops = &amdv1_ops; - rc = pt_iommu_amdv1_init(&mock->amdv1, &cfg, GFP_KERNEL); - if (rc) - goto err_free; - if (flags & IOMMU_HWPT_ALLOC_DIRTY_TRACKING) - mock->domain.dirty_ops = &amdv1_dirty_ops; - break; - } default: rc = -EOPNOTSUPP; goto err_free;