From bd24a25e68956918ad85aa75c0c6aaef605ac781 Mon Sep 17 00:00:00 2001 From: Stephan Raue Date: Mon, 14 Oct 2013 08:16:27 +0200 Subject: [PATCH] xf86-video-intel: update to xf86-video-intel-2.99.904 Signed-off-by: Stephan Raue --- .../x11/driver/xf86-video-intel/package.mk | 2 +- ...f86-video-intel-upstream-fix-f0bd716.patch | 68 +++++++++++++++++++ 2 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 packages/x11/driver/xf86-video-intel/patches/xf86-video-intel-upstream-fix-f0bd716.patch diff --git a/packages/x11/driver/xf86-video-intel/package.mk b/packages/x11/driver/xf86-video-intel/package.mk index 7b878c8815..dc8076af68 100644 --- a/packages/x11/driver/xf86-video-intel/package.mk +++ b/packages/x11/driver/xf86-video-intel/package.mk @@ -19,7 +19,7 @@ ################################################################################ PKG_NAME="xf86-video-intel" -PKG_VERSION="2.99.903" +PKG_VERSION="2.99.904" PKG_REV="1" PKG_ARCH="i386 x86_64" PKG_LICENSE="OSS" diff --git a/packages/x11/driver/xf86-video-intel/patches/xf86-video-intel-upstream-fix-f0bd716.patch b/packages/x11/driver/xf86-video-intel/patches/xf86-video-intel-upstream-fix-f0bd716.patch new file mode 100644 index 0000000000..653edff6b4 --- /dev/null +++ b/packages/x11/driver/xf86-video-intel/patches/xf86-video-intel-upstream-fix-f0bd716.patch @@ -0,0 +1,68 @@ +From f0bd716425d1514b62565f9a65397cd1cb2ffb3a Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Thu, 10 Oct 2013 15:22:45 +0000 +Subject: sna: Sanitize output->crtc before falling back oto xf86InitialConfiguration + +During initialisation, we stash the currently attached CRTC id in +output->crtc. This is fine as ordinarily we would not dereference +output->crtc until after it had been assigned a real CRTC. However, + +commit 6fda305e2f2f991b39d09e67d0b17c8c3d50f9a4 +Author: Chris Wilson +Date: Wed Oct 9 15:59:42 2013 +0100 + + sna: Append the current mode to the output list if not found + +introduces such an early dereference and causes a crash if we fail to +probe the KMS configuration (usually due to a user override). + +Reported-by: Łukasz Maśko +Signed-off-by: Chris Wilson +--- +diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c +index 71c4c60..27a4467 100644 +--- a/src/sna/sna_display.c ++++ b/src/sna/sna_display.c +@@ -3225,8 +3225,10 @@ static bool sna_probe_initial_configuration(struct sna *sna) + xf86OutputPtr output = config->output[i]; + uint32_t crtc_id; + +- if (to_sna_output(output) == NULL) ++ if (to_sna_output(output) == NULL) { ++ assert(output->crtc == NULL); + continue; ++ } + + crtc_id = (uintptr_t)output->crtc; + output->crtc = NULL; +@@ -3321,6 +3323,16 @@ static bool sna_probe_initial_configuration(struct sna *sna) + } + + static void ++sanitize_outputs(struct sna *sna) ++{ ++ xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(sna->scrn); ++ int i; ++ ++ for (i = 0; i < config->num_output; i++) ++ config->output[i]->crtc = NULL; ++} ++ ++static void + sna_crtc_config_notify(ScreenPtr screen) + { + DBG(("%s\n", __FUNCTION__)); +@@ -3372,8 +3384,10 @@ bool sna_mode_pre_init(ScrnInfoPtr scrn, struct sna *sna) + if (!sna_mode_fake_init(sna, num_fake)) + return false; + +- if (!sna_probe_initial_configuration(sna)) ++ if (!sna_probe_initial_configuration(sna)) { ++ sanitize_outputs(sna); + xf86InitialConfiguration(scrn, TRUE); ++ } + + sna_setup_provider(scrn); + return scrn->modes != NULL; +-- +cgit v0.9.0.2-2-gbebe