On Mon, Jul 24, 2023 at 03:59:35AM -0700, Yi Liu wrote:
diff --git a/drivers/iommu/iommufd/main.c b/drivers/iommu/iommufd/main.c index 94c498b8fdf6..bd3efc1d8509 100644 --- a/drivers/iommu/iommufd/main.c +++ b/drivers/iommu/iommufd/main.c @@ -17,6 +17,7 @@ #include <linux/bug.h> #include <uapi/linux/iommufd.h> #include <linux/iommufd.h> +#include "../iommu-priv.h" #include "io_pagetable.h" #include "iommufd_private.h" @@ -177,6 +178,78 @@ static int iommufd_destroy(struct iommufd_ucmd *ucmd) return 0; } +static int iommufd_zero_fill_user(u64 ptr, int bytes)
(void __user * ptr, size_t bytes)
+{
- int index = 0;
- for (; index < bytes; index++) {
if (put_user(0, (uint8_t __user *)u64_to_user_ptr(ptr + index)))
return -EFAULT;
- }
- return 0;
+}
+static int iommufd_get_hw_info(struct iommufd_ucmd *ucmd) +{
- struct iommu_hw_info *cmd = ucmd->cmd;
- unsigned int length = 0, data_len;
- struct iommufd_device *idev;
- const struct iommu_ops *ops;
- void *data = NULL;
- int rc = 0;
- 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->hw_info)
goto done;
- /* driver has hw_info callback should have a unique hw_info_type */
- if (WARN_ON_ONCE(ops->hw_info_type == IOMMU_HW_INFO_TYPE_NONE)) {
pr_warn_ratelimited("iommu driver set an invalid type\n");
Don't really need both a WARN and pr_warn(), just keep the WARN_ON
Jason