From 78aea9a1207dd144dddc98c62e1a4392340def45 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Sat, 18 Sep 2010 11:19:49 -0700 Subject: [PATCH] .32 patches --- ...fb-from-the-crtc-is-we-call-mode_set.patch | 42 +++++++++++++++++++ queue-2.6.32/series | 1 + 2 files changed, 43 insertions(+) create mode 100644 queue-2.6.32/drm-only-decouple-the-old_fb-from-the-crtc-is-we-call-mode_set.patch diff --git a/queue-2.6.32/drm-only-decouple-the-old_fb-from-the-crtc-is-we-call-mode_set.patch b/queue-2.6.32/drm-only-decouple-the-old_fb-from-the-crtc-is-we-call-mode_set.patch new file mode 100644 index 00000000000..d14be6eeab2 --- /dev/null +++ b/queue-2.6.32/drm-only-decouple-the-old_fb-from-the-crtc-is-we-call-mode_set.patch @@ -0,0 +1,42 @@ +From 356ad3cd616185631235ffb48b3efbf39f9923b3 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Thu, 9 Sep 2010 09:41:32 +0100 +Subject: drm: Only decouple the old_fb from the crtc is we call mode_set* + +From: Chris Wilson + +commit 356ad3cd616185631235ffb48b3efbf39f9923b3 upstream. + +Otherwise when disabling the output we switch to the new fb (which is +likely NULL) and skip the call to mode_set -- leaking driver private +state on the old_fb. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=29857 +Reported-by: Sitsofe Wheeler +Signed-off-by: Chris Wilson +Cc: Dave Airlie +Signed-off-by: Dave Airlie +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/drm_crtc_helper.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/drm_crtc_helper.c ++++ b/drivers/gpu/drm/drm_crtc_helper.c +@@ -925,13 +925,13 @@ int drm_crtc_helper_set_config(struct dr + mode_changed = true; + + if (mode_changed) { +- old_fb = set->crtc->fb; +- set->crtc->fb = set->fb; + set->crtc->enabled = (set->mode != NULL); + if (set->mode != NULL) { + DRM_DEBUG_KMS("attempting to set mode from" + " userspace\n"); + drm_mode_debug_printmodeline(set->mode); ++ old_fb = set->crtc->fb; ++ set->crtc->fb = set->fb; + if (!drm_crtc_helper_set_mode(set->crtc, set->mode, + set->x, set->y, + old_fb)) { diff --git a/queue-2.6.32/series b/queue-2.6.32/series index 1c35fec3d8a..7b64287ddbc 100644 --- a/queue-2.6.32/series +++ b/queue-2.6.32/series @@ -120,3 +120,4 @@ sunrpc-fix-race-corrupting-rpc-upcall.patch i915-return-efault-if-copy_to_user-fails.patch i915-return-efault-if-copy_to_user-fails-2.patch drm-i915-prevent-double-dpms-on.patch +drm-only-decouple-the-old_fb-from-the-crtc-is-we-call-mode_set.patch -- 2.47.3