--- /dev/null
+From a59c7428549c8be0724bcfceecd596582840852b Mon Sep 17 00:00:00 2001
+From: Chris Wilson <chris@chris-wilson.co.uk>
+Date: Thu, 24 Jun 2010 12:24:58 +0100
+Subject: [PATCH] glx: Prevent NULL context deref in __glXGetDrawable()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+During a SwapBuffers request, we may end up querying an unknown drawable
+outside of an active context, and so need to report this error prior to
+attempting to dereference the NULL context.
+
+Also fixes:
+
+ [Bug 29184] glXSwapBuffers with no GLX context crashes X.
+ https://bugs.freedesktop.org/show_bug.cgi?id=29184
+
+Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
+Cc: Kristian Høgsberg <krh@bitplanet.net>
+---
+ glx/glxcmds.c | 7 +++++++
+ 1 files changed, 7 insertions(+), 0 deletions(-)
+
+diff --git a/glx/glxcmds.c b/glx/glxcmds.c
+index 9e5b213..8d13c15 100644
+--- a/glx/glxcmds.c
++++ b/glx/glxcmds.c
+@@ -491,6 +491,13 @@ __glXGetDrawable(__GLXcontext *glxc, GLXDrawable drawId, ClientPtr client,
+ return pGlxDraw;
+ }
+
++ /* No active context and an unknown drawable, bail. */
++ if (glxc == NULL) {
++ client->errorValue = drawId;
++ *error = BadMatch;
++ return NULL;
++ }
++
+ /* The drawId wasn't a GLX drawable. Make sure it's a window and
+ * create a GLXWindow for it. Check that the drawable screen
+ * matches the context screen and that the context fbconfig is
+--
+1.7.1
+