From 3dba171f5e82101aa8ea2e47d2253c3410907f6a Mon Sep 17 00:00:00 2001 From: Michal Srb Date: Tue, 15 Apr 2014 18:54:35 +0300 Subject: [PATCH] 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 --- hw/xfree86/dri2/dri2.c | 6 ++---- 1 file 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