i915 driver fails on i686 userspace + x86_64 kernel

Pavel Roskin proski at gnu.org
Tue Oct 15 20:00:50 CEST 2013


Hi Chris,

It's almost certainly stack corruption.  This "patch" fixes X for me.
The first DRM_IOCTL_MODE_GETCONNECTOR in sna_output_init() must be
overwriting the implied memory bounds.

diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
index 28151ab..dac834f 100644
--- a/src/sna/sna_display.c
+++ b/src/sna/sna_display.c
@@ -2588,6 +2588,7 @@ sna_output_init(ScrnInfoPtr scrn, struct sna_mode *mode, int num)
 	struct sna *sna = to_sna(scrn);
 	xf86OutputPtr output;
 	struct drm_mode_get_connector conn;
+	int enc_protect[16];
 	struct drm_mode_get_encoder enc;
 	struct drm_mode_modeinfo dummy;
 	struct sna_output *sna_output;
@@ -2600,6 +2601,7 @@ sna_output_init(ScrnInfoPtr scrn, struct sna_mode *mode, int num)
 
 	VG_CLEAR(conn);
 	VG_CLEAR(enc);
+	&enc_protect;
 
 	conn.connector_id = mode->kmode->connectors[num];
 	conn.count_props = 0;

-- 
Regards,
Pavel Roskin


More information about the dri-devel mailing list