[Mesa-dev] [Mesa-stable] [PATCH] glx: Properly handle cases where screen creation fails
Emil Velikov
emil.l.velikov at gmail.com
Wed Feb 21 14:44:47 UTC 2018
On 21 February 2018 at 14:41, Emil Velikov <emil.l.velikov at gmail.com> wrote:
> On 21 February 2018 at 14:26, Chuck Atkins <chuck.atkins at kitware.com> wrote:
>> This fixes a segfault exposed by a29d63ecf7 which occurs when swr is
>> used on an unsupported architecture.
>>
>> Signed-off-by: Chuck Atkins <chuck.atkins at kitware.com>
>> Cc: mesa-stable at lists.freedesktop.org
>> Cc: George Kyriazis <george.kyriazis at intel.com>
>> Cc: Bruce Cherniak <bruce.cherniak at intel.com>
>> ---
>> src/gallium/state_trackers/glx/xlib/xm_api.c | 11 +++++++----
>> 1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
>> index 934c0aba11..3aec57e85d 100644
>> --- a/src/gallium/state_trackers/glx/xlib/xm_api.c
>> +++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
>> @@ -182,9 +182,12 @@ xmesa_close_display(Display *display)
>> * }
>> */
>>
>> - if (xmdpy->smapi->destroy)
>> - xmdpy->smapi->destroy(xmdpy->smapi);
>> - free(xmdpy->smapi);
>> + if (xmdpy->smapi)
>> + {
>> + if (xmdpy->smapi->destroy)
>> + xmdpy->smapi->destroy(xmdpy->smapi);
>> + free(xmdpy->smapi);
>> + }
>>
>> XFree((char *) info);
>> }
>> @@ -767,7 +770,7 @@ XMesaVisual XMesaCreateVisual( Display *display,
>> XMesaVisual v;
>> GLint red_bits, green_bits, blue_bits, alpha_bits;
>>
>> - if (!xmdpy)
>> + if (!xmdpy || !xmdpy->screen)
>> return NULL;
>>
> Something doesn't look quite right - it seems that xmesa_init_display
> should be fixed instead.
>
> Currently it returns non-NULL when either of the following fail:
> - driver.create_pipe_screen()
> - CALLOC_STRUCT
>
> I would add an explicit check after those + goto err_path.
> The latter of which doing some proper teardown. Note: that there's a
> leak in there - one should walk, detach & free the new entry from the
> MesaExtInfo list.
>
As it always happens, just remembered that the classic xlib-glx
(src/mesa/drivers/x11/) might need a similar fix.
-Emil
More information about the mesa-dev
mailing list