Lines Matching refs:ucmd

65 struct iommufd_object *_iommufd_object_alloc_ucmd(struct iommufd_ucmd *ucmd,  in _iommufd_object_alloc_ucmd()  argument
72 if (WARN_ON(ucmd->new_obj)) in _iommufd_object_alloc_ucmd()
84 new_obj = _iommufd_object_alloc(ucmd->ictx, size, type); in _iommufd_object_alloc_ucmd()
88 ucmd->new_obj = new_obj; in _iommufd_object_alloc_ucmd()
263 static int iommufd_destroy(struct iommufd_ucmd *ucmd) in iommufd_destroy() argument
265 struct iommu_destroy *cmd = ucmd->cmd; in iommufd_destroy()
267 return iommufd_object_remove(ucmd->ictx, NULL, cmd->id, 0); in iommufd_destroy()
364 static int iommufd_option(struct iommufd_ucmd *ucmd) in iommufd_option() argument
366 struct iommu_option *cmd = ucmd->cmd; in iommufd_option()
374 rc = iommufd_option_rlimit_mode(cmd, ucmd->ictx); in iommufd_option()
377 rc = iommufd_ioas_option(ucmd); in iommufd_option()
384 if (copy_to_user(&((struct iommu_option __user *)ucmd->ubuffer)->val64, in iommufd_option()
419 int (*execute)(struct iommufd_ucmd *ucmd);
481 struct iommufd_ucmd ucmd = {}; in iommufd_fops_ioctl() local
491 ucmd.ictx = ictx; in iommufd_fops_ioctl()
492 ucmd.ubuffer = (void __user *)arg; in iommufd_fops_ioctl()
493 ret = get_user(ucmd.user_size, (u32 __user *)ucmd.ubuffer); in iommufd_fops_ioctl()
500 if (ucmd.user_size < op->min_size) in iommufd_fops_ioctl()
503 ucmd.cmd = &buf; in iommufd_fops_ioctl()
504 ret = copy_struct_from_user(ucmd.cmd, op->size, ucmd.ubuffer, in iommufd_fops_ioctl()
505 ucmd.user_size); in iommufd_fops_ioctl()
508 ret = op->execute(&ucmd); in iommufd_fops_ioctl()
510 if (ucmd.new_obj) { in iommufd_fops_ioctl()
512 iommufd_object_abort_and_destroy(ictx, ucmd.new_obj); in iommufd_fops_ioctl()
514 iommufd_object_finalize(ictx, ucmd.new_obj); in iommufd_fops_ioctl()