[PATCH] glx: Do not call into Composite if it is disabled.

Adam Jackson ajax at nwnk.net
Wed Feb 14 19:33:31 UTC 2018

On Tue, 2018-02-13 at 10:33 +0100, Michal Srb wrote:
> Otherwise X server crashes if GLX is enabled and Composite disabled. For
> example the compIsAlternateVisual function will try to lookup CompScreenPtr
> using the CompScreenPrivateKey, but that was never initialized if Composite is
> disabled.

I've hit enough cases like this that I think we should consider
changing dixLookupPrivate thus:

diff --git a/include/privates.h b/include/privates.h
index e89c3e440..f34c32fd3 100644
--- a/include/privates.h
+++ b/include/privates.h
@@ -155,12 +155,14 @@ dixSetPrivate(PrivatePtr *privates, const DevPrivateKey key, void *val)
  * For privates with defined storage, return the address of the
  * storage. For privates without defined storage, return the pointer
- * contents
+ * contents. If the key is not yet set up return NULL.
 static inline void *
 dixLookupPrivate(PrivatePtr *privates, const DevPrivateKey key)
-    if (key->size)
+    if (!key->initialized)
+        return NULL;
+    else if (key->size)
         return dixGetPrivateAddr(privates, key);
         return dixGetPrivate(privates, key);

I think if we'd done that I wouldn't have needed to back out v3 of the
"RANDR disabling" patch.

- ajax

More information about the xorg-devel mailing list