linux-stable/drivers/gpu/drm/qxl
Jeremy Cline 889ad63d41 drm/qxl: Call qxl_bo_unref outside atomic context
"qxl_bo_unref" may sleep, but calling "qxl_release_map" causes
"preempt_disable()" to be called and "preempt_enable()" isn't called
until "qxl_release_unmap" is used. Move the call to "qxl_bo_unref" out
from in between the two to avoid sleeping from an atomic context.

This issue can be demonstrated on a kernel with CONFIG_LOCKDEP=y by
creating a VM using QXL, using a desktop environment using Xorg, then
moving the cursor on or off a window.

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1571128
Fixes: 9428088c90 ("drm/qxl: reapply cursor after resetting primary")
Cc: stable@vger.kernel.org
Signed-off-by: Jeremy Cline <jcline@redhat.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20180601200532.13619-1-jcline@redhat.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
2018-06-04 09:31:39 +02:00
..
Kconfig drm: fix compilations issues introduced by "drm: allow to use mmuless SoC" 2017-01-09 11:30:30 +01:00
Makefile drm/qxl: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:36:17 +02:00
qxl_cmd.c qxl: keep separate release_bo pointer 2018-04-25 15:03:12 -04:00
qxl_debugfs.c drm/qxl: fix include notation and remove -Iinclude/drm flag 2017-05-17 14:36:17 +02:00
qxl_dev.h
qxl_display.c drm/qxl: Call qxl_bo_unref outside atomic context 2018-06-04 09:31:39 +02:00
qxl_draw.c drm: Nuke fb->bits_per_pixel 2016-12-15 14:55:34 +02:00
qxl_drv.c drm/qxl: Use the drm_driver.dumb_destroy default 2017-08-16 20:15:38 +02:00
qxl_drv.h qxl: keep separate release_bo pointer 2018-04-25 15:03:12 -04:00
qxl_dumb.c drm/qxl: Replace drm_gem_object_reference/unreference() with _get/put() 2018-03-21 09:19:56 +01:00
qxl_fb.c drm/qxl: Replace drm_gem_object_reference/unreference() with _get/put() 2018-03-21 09:19:56 +01:00
qxl_gem.c drm/qxl: Replace drm_gem_object_reference/unreference() with _get/put() 2018-03-21 09:19:56 +01:00
qxl_image.c
qxl_ioctl.c qxl: fix qxl_release_{map,unmap} 2018-04-25 15:03:12 -04:00
qxl_irq.c drm: qxl: Embed drm_device into driver structure 2017-02-02 10:02:37 +01:00
qxl_kms.c drm/qxl: Remove qxl_debugfs_remove_files() 2017-03-09 09:01:00 +01:00
qxl_object.c Merge airlied/drm-next into drm-misc-next 2018-03-21 09:40:55 -04:00
qxl_object.h drm: qxl: Drop duplicated device pointer attribute 2017-02-02 10:02:34 +01:00
qxl_prime.c
qxl_release.c qxl: keep separate release_bo pointer 2018-04-25 15:03:12 -04:00
qxl_ttm.c drm/ttm: add bo as parameter to the ttm_tt_create callback 2018-03-14 14:38:27 -05:00