diff options
author | Michal Srb <msrb@suse.com> | 2014-04-15 18:54:35 +0300 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2014-05-22 16:27:44 -0700 |
commit | 3dba171f5e82101aa8ea2e47d2253c3410907f6a (patch) | |
tree | 405c322c680ba0683bd60c4865c54a8c4274e87b | |
parent | c08d2b8ccb0158dbf1f529f80cc3236e66236cce (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 <airlied@redhat.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | hw/xfree86/dri2/dri2.c | 6 |
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 |