24.09.2026 12:55, Honglei Huang пишет:
> +int virtio_gpu_userptr_create(struct virtio_gpu_device *vgdev,
> +                           struct drm_file *file,
> +                           struct virtio_gpu_object_params *params,
> +                           struct virtio_gpu_object **bo_ptr)
> +{
> +     struct virtio_gpu_object_userptr *userptr;
> +     struct virtio_gpu_mem_entry *ents = NULL;
> +     struct sg_table *sgt;
> +     struct mm_struct *mm;
> +     unsigned long lock_limit;
> +     unsigned long start;
> +     unsigned long end;
> +     s64 new_pinned;
> +     unsigned int nents;
> +     int ret;
> +
> +     *bo_ptr = NULL;
> +
> +     if (!params->size || !IS_ALIGNED(params->size, PAGE_SIZE) ||
> +         params->userptr != (unsigned long)params->userptr)
> +             return -EINVAL;
> +
> +     start = params->userptr;
> +     if (!IS_ALIGNED(start, PAGE_SIZE) ||
> +         check_add_overflow(start, (unsigned long)params->size, &end))
> +             return -EINVAL;

There is new vgdev->blob_alignment defining host page size as it may
differ from guest's page. Will be good to validate both.

-- 
Best regards,
Dmitry

Reply via email to