> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Saturday, February 25, 2023 8:28 AM > + > +int iommufd_hwpt_alloc(struct iommufd_ucmd *ucmd) > +{ > + struct iommu_hwpt_alloc *cmd = ucmd->cmd; > + struct iommufd_hw_pagetable *hwpt; > + struct iommufd_device *idev; > + struct iommufd_ioas *ioas; > + int rc; > + > + if (cmd->flags) > + return -EOPNOTSUPP; miss a check on the __reserved field. > +/** > + * struct iommu_hwpt_alloc - ioctl(IOMMU_HWPT_ALLOC) > + * @size: sizeof(struct iommu_hwpt_alloc) > + * @flags: Must be 0 > + * @dev_id: The device to allocate this HWPT for > + * @pt_id: The IOAS to connect this HWPT to > + * @out_hwpt_id: The ID of the new HWPT > + * @__reserved: Must be 0 > + * > + * Explicitly allocate a hardware page table object. This is the same object > + * type that is returned by iommufd_device_attach() and represents the > + * underlying iommu driver's iommu_domain kernel object. > + * > + * A normal HWPT will be created with the mappings from the given IOAS. > + */ 'normal' is a confusing word in this context.