diff options
authorMichal Srb <>2014-04-15 18:54:35 +0300
committerKeith Packard <>2014-05-22 16:27:44 -0700
commit3dba171f5e82101aa8ea2e47d2253c3410907f6a (patch)
parentc08d2b8ccb0158dbf1f529f80cc3236e66236cce (diff)
dri2: Fix detection of wrong prime_id in GetScreenPrime.
Checking the iterating variable ("slave") against null can not detect if the xorg_list_for_each_entry finished without break being invoked - slave variable will be always non-null. This caused segfault whenever someone tried to use DRI_PRIME with incorrect id while having at least one render offloading slave configured. Restructurize the GetScreenPrime to work as expected. Reviewed-by: Dave Airlie <> Signed-off-by: Keith Packard <>
1 files changed, 2 insertions, 4 deletions
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 76708cabc..6dd77963c 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -156,11 +156,9 @@ GetScreenPrime(ScreenPtr master, int prime_id)
ds = DRI2GetScreen(slave);
if (ds->prime_id == prime_id)
- break;
+ return slave;
- if (!slave)
- return master;
- return slave;
+ return master;
static DRI2ScreenPtr