[PATCH] dri2: Fix detection of wrong prime_id in GetScreenPrime.

Michal Srb msrb at suse.com
Tue Apr 29 03:11:06 PDT 2014


No response? It's simple change and fixes client triggered crash...

On Tuesday April 15 2014 18:54:35 Michal Srb wrote:
> 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.
> 
> diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
> index 729a323..5b2c662 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
> 
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel



More information about the xorg-devel mailing list