On Sun, Mar 05, 2023 at 05:42:56PM -0800, Nicolin Chen wrote: > On Fri, Feb 24, 2023 at 08:27:57PM -0400, Jason Gunthorpe wrote: > > > +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; > > + > > + idev = iommufd_get_device(ucmd, cmd->dev_id); > > + if (IS_ERR(idev)) > > + return PTR_ERR(idev); > > + > > + ioas = iommufd_get_ioas(ucmd, cmd->pt_id); > > + if (IS_ERR(ioas)) { > > + rc = PTR_ERR(idev); > > PTR_ERR(ioas) > > > + goto out_put_idev; > > + } > > + > > + mutex_lock(&ioas->mutex); > > + hwpt = iommufd_hw_pagetable_alloc(ucmd->ictx, ioas, idev, false); > > + mutex_unlock(&ioas->mutex); > > + if (IS_ERR(hwpt)) { > > + rc = PTR_ERR(idev); > > PTR_ERR(hwpt) Oops, yep Thanks, Jason