On Thu, Mar 09, 2023 at 09:50:18PM +0800, Baolu Lu wrote: > > + if (cmd->flags || cmd->__reserved || !cmd->data_len) > > + return -EOPNOTSUPP; > > + > > + idev = iommufd_get_device(ucmd, cmd->dev_id); > > + if (IS_ERR(idev)) > > + return PTR_ERR(idev); > > + > > + ops = dev_iommu_ops(idev->dev); > > + if (!ops || !ops->hw_info) { > > dev_iommu_ops() will never return a NULL. > > Need below check > > dev->iommu && dev->iommu->iommu_dev > > before dev_iommu_ops(). Perhaps something like below? > > if (!dev->iommu || !dev->iommu->iommu_dev) > return -EINVAL; At this point the device has become owned through the ownership API, it absolutely has to have an iommu and an ops. No need to check anything. Jason