drm/client: Depend on GEM object kmap ref-counting
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 20 Nov 2020 10:25:38 +0000 (11:25 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Tue, 24 Nov 2020 08:27:54 +0000 (09:27 +0100)
commitc1acbf08eb49721246f64fb55a78e416840dfcf3
tree08051f0fac71454beb280418a93226e9c9ac6529
parent763aea17bf575ecea62e4e18c29a8452a770cb1e
drm/client: Depend on GEM object kmap ref-counting

DRM client's vmap/vunmap functions don't allow for multiple vmap
operations. Calling drm_client_buffer_vmap() twice returns the same
mapping, then calling drm_client_buffer_vunmap() twice already unmaps
on the first call. This leads to unbalanced vmap refcounts. Fix this
by calling drm_gem_vmap() unconditionally in drm_client_buffer_vmap().

All drivers that support DRM clients have to implement correct ref-
counting for their vmap operations, or not vunmap at all. This is the
case for drivers that use CMA, SHMEM and VRAM helpers, and QXL. Other
drivers are not affected.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Acked-by: Maxime Ripard <mripard@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20201120102545.4047-4-tzimmermann@suse.de
drivers/gpu/drm/drm_client.c