drm/nouveau: make cursor_set implementation consistent with other drivers
Subsystems (3)
PATCH 1/1 drm/nouveau: make cursor_set implementation consistent with other drivers
When xorg state tracker wants to hide the cursor it calls set_cursor with NULL buffer_handle and size=0x0, but nouveau refuses to hide it because size is not 64x64... which is a bit odd. Both radeon and intel check buffer_handle before validating size of cursor, so make nouveau implementation consistent with them.
--- drivers/gpu/drm/nouveau/nv04_crtc.c | 6 +++--- drivers/gpu/drm/nouveau/nv50_crtc.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-)
drivers/gpu/drm/nouveau/nv04_crtc.c +3 -3
@@ -943,14 +943,14 @@ nv04_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv,struct drm_gem_object *gem;int ret =0 ; -if (width !=64 || height !=64 ) -return -EINVAL ; -if (!buffer_handle) { nv_crtc->cursor.hide (nv_crtc, true);return 0 ; } +if (width !=64 || height !=64 ) +return -EINVAL ; + gem =drm_gem_object_lookup (dev, file_priv, buffer_handle);if (!gem)return -ENOENT ;
drivers/gpu/drm/nouveau/nv50_crtc.c +3 -3
@@ -349,14 +349,14 @@ nv50_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv,struct drm_gem_object *gem;int ret =0 , i; -if (width !=64 || height !=64 ) -return -EINVAL ; -if (!buffer_handle) { nv_crtc->cursor.hide (nv_crtc, true);return 0 ; } +if (width !=64 || height !=64 ) +return -EINVAL ; + gem =drm_gem_object_lookup (dev, file_priv, buffer_handle);if (!gem)return -ENOENT ;
Signature · 1 line
1.7.4.1
A message that is not in the archive (sent off-list or not yet received): [email protected]
Quoted 5 lines · Marcin Slusarz
When xorg state tracker wants to hide the cursor it calls
set_cursorwith NULLbuffer_handleand size=0x0, but nouveau refuses to hide it because size is not 64x64... which is a bit odd. Both radeon and intel checkbuffer_handlebefore validating size of cursor, so make nouveau implementation consistent with them.
Pushed, thanks.
Quoted 51 lines
Signed-off-by Marcin Slusarz <[email protected]>--- drivers/gpu/drm/nouveau/nv04_crtc.c | 6 +++--- drivers/gpu/drm/nouveau/nv50_crtc.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-)drivers/gpu/drm/nouveau/nv04_crtc.c +3
-3@@ -943,14 +943,14 @@ nv04_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv,struct drm_gem_object *gem;int ret =0 ; -if (width !=64 || height !=64 ) -return -EINVAL ; -if (!buffer_handle) { nv_crtc->cursor.hide (nv_crtc, true);return 0 ; } +if (width !=64 || height !=64 ) +return -EINVAL ; + gem =drm_gem_object_lookup (dev, file_priv, buffer_handle);if (!gem)return -ENOENT ;drivers/gpu/drm/nouveau/nv50_crtc.c +3
-3@@ -349,14 +349,14 @@ nv50_crtc_cursor_set(struct drm_crtc *crtc, struct drm_file *file_priv,struct drm_gem_object *gem;int ret =0 , i; -if (width !=64 || height !=64 ) -return -EINVAL ; -if (!buffer_handle) { nv_crtc->cursor.hide (nv_crtc, true);return 0 ; } +if (width !=64 || height !=64 ) +return -EINVAL ; + gem =drm_gem_object_lookup (dev, file_priv, buffer_handle);if (!gem)return -ENOENT ;