Currently, virtio uses its own dumb_map_offset implementation,
virtio_gpu_mode_dumb_mmap. It works similarly to generic implementation,
drm_gem_dumb_map_offset, and using the generic implementation is
preferable (and making drivers to do so is a task stated on the DRM
subsystem's TODO list).
Thus, make driver use the generic implementation. This includes
VIRTGPU_MAP ioctl so it cannot be used to circumvent rules imposed by
drm_gem_dumb_map_offset (imported objects cannot be mapped).
Signed-off-by: Peter Shkenev <mustela@erminea.space>
Signed-off-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
[dmitry.osipenko@collabora.com: cosmetic code improvements]
Link: https://patchwork.freedesktop.org/patch/msgid/20241107141133.13624-1-mustela@erminea.space
        .postclose = virtio_gpu_driver_postclose,
 
        .dumb_create = virtio_gpu_mode_dumb_create,
-       .dumb_map_offset = virtio_gpu_mode_dumb_mmap,
 
        DRM_FBDEV_SHMEM_DRIVER_OPS,
 
 
 int virtio_gpu_mode_dumb_create(struct drm_file *file_priv,
                                struct drm_device *dev,
                                struct drm_mode_create_dumb *args);
-int virtio_gpu_mode_dumb_mmap(struct drm_file *file_priv,
-                             struct drm_device *dev,
-                             uint32_t handle, uint64_t *offset_p);
 
 struct virtio_gpu_object_array *virtio_gpu_array_alloc(u32 nents);
 struct virtio_gpu_object_array*
 
        return ret;
 }
 
-int virtio_gpu_mode_dumb_mmap(struct drm_file *file_priv,
-                             struct drm_device *dev,
-                             uint32_t handle, uint64_t *offset_p)
-{
-       struct drm_gem_object *gobj;
-
-       BUG_ON(!offset_p);
-       gobj = drm_gem_object_lookup(file_priv, handle);
-       if (gobj == NULL)
-               return -ENOENT;
-       *offset_p = drm_vma_node_offset_addr(&gobj->vma_node);
-       drm_gem_object_put(gobj);
-       return 0;
-}
-
 int virtio_gpu_gem_object_open(struct drm_gem_object *obj,
                               struct drm_file *file)
 {
 
        struct virtio_gpu_device *vgdev = dev->dev_private;
        struct drm_virtgpu_map *virtio_gpu_map = data;
 
-       return virtio_gpu_mode_dumb_mmap(file, vgdev->ddev,
-                                        virtio_gpu_map->handle,
-                                        &virtio_gpu_map->offset);
+       return drm_gem_dumb_map_offset(file, vgdev->ddev,
+                                      virtio_gpu_map->handle,
+                                      &virtio_gpu_map->offset);
 }
 
 static int virtio_gpu_getparam_ioctl(struct drm_device *dev, void *data,