]> git.hungrycats.org Git - linux/commitdiff
iommufd/selftest: Add invalidation entry_num and entry_len boundary tests
authorNicolin Chen <nicolinc@nvidia.com>
Wed, 3 Jun 2026 21:26:54 +0000 (14:26 -0700)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 12 Jun 2026 13:44:44 +0000 (10:44 -0300)
Test that the cache invalidation ioctl rejects an oversized entry_len and
an oversized entry_num, covering the CPU soft-lockup paths the caps close.

Link: https://patch.msgid.link/r/9ae78ed8e64afbb2f2df27d03466380061adf7d9.1780521606.git.nicolinc@nvidia.com
Assisted-by: Claude:claude-opus-4-8
Signed-off-by: Nicolin Chen <nicolinc@nvidia.com>
Reviewed-by: Lu Baolu <baolu.lu@linux.intel.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
tools/testing/selftests/iommu/iommufd.c

index 8d32b2f70beaebf64d8d1a50cfc6159e735688de..d44b34b05757e3bebebab746b7b78973623a2331 100644 (file)
@@ -556,6 +556,21 @@ TEST_F(iommufd_ioas, alloc_hwpt_nested)
                                         1, &num_inv);
                assert(!num_inv);
 
+               /* Negative test: entry_len is bounded by PAGE_SIZE */
+               num_inv = 1;
+               test_err_hwpt_invalidate(EINVAL, nested_hwpt_id[0], inv_reqs,
+                                        IOMMU_HWPT_INVALIDATE_DATA_SELFTEST,
+                                        PAGE_SIZE + 1, &num_inv);
+               assert(!num_inv);
+
+               /* Negative test: entry_num is bounded */
+#define IOMMU_HWPT_INVALIDATE_ENTRY_NUM_MAX (1U << 19)
+               num_inv = IOMMU_HWPT_INVALIDATE_ENTRY_NUM_MAX + 1;
+               test_err_hwpt_invalidate(EINVAL, nested_hwpt_id[0], inv_reqs,
+                                        IOMMU_HWPT_INVALIDATE_DATA_SELFTEST,
+                                        sizeof(*inv_reqs), &num_inv);
+               assert(!num_inv);
+
                /* Negative test: invalid flag is passed */
                num_inv = 1;
                inv_reqs[0].flags = 0xffffffff;