[Mesa-dev] [PATCH] egl_dri2: fix aux buffer leak in drm platform

Mandeep Singh Baines msb at chromium.org
Tue Apr 10 17:33:12 PDT 2012


On Tue, Apr 10, 2012 at 4:02 PM, Kristian Høgsberg <krh at bitplanet.net> wrote:
> On Tue, Apr 10, 2012 at 6:30 PM, Mandeep Baines
> <mandeep.baines at gmail.com> wrote:
>> Attached is the test case I've been using.
>
> Nice, I've been meaning to update eglkms.c to also demonstrate
> pageflipping.  Do you mind if I commit your version?
>

Attached is a cleaned up version with proper error handling.

> Kristian
>
>> On Tue, Apr 10, 2012 at 3:26 PM,  <mandeep.baines at gmail.com> wrote:
>>> From: Mandeep Singh Baines <msb at chromium.org>
>>>
>>> Keep a reference to any newly allocated aux buffers to avoid
>>> re-allocating for every st_framebuffer_validate() (i.e. leaking).
>>>
>>> Signed-off-by: Mandeep Singh Baines <msb at chromium.org>
>>> Cc: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira at intel.com>
>>> Cc: Benjamin Franzke <benjaminfranzke at googlemail.com>
>>> Cc: Kristian Hogsberg <krh at bitplanet.net>
>>> Cc: David Reveman <reveman at chromium.org>
>>> Cc: Stephane Marchesin <marcheu at chromium.org>
>>> ---
>>>  src/egl/drivers/dri2/platform_drm.c |    9 ++++-----
>>>  1 files changed, 4 insertions(+), 5 deletions(-)
>>>
>>> diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c
>>> index 18ecd17..54067ff 100644
>>> --- a/src/egl/drivers/dri2/platform_drm.c
>>> +++ b/src/egl/drivers/dri2/platform_drm.c
>>> @@ -220,16 +220,15 @@ get_aux_bo(struct dri2_egl_surface *dri2_surf,
>>>  {
>>>    struct dri2_egl_display *dri2_dpy =
>>>       dri2_egl_display(dri2_surf->base.Resource.Display);
>>> -   __DRIbuffer *b;
>>> +   __DRIbuffer *b = dri2_surf->dri_buffers[attachment];
>>>
>>> -   b = NULL;
>>> -   if (dri2_surf->dri_buffers[attachment])
>>> -      b = dri2_surf->dri_buffers[attachment];
>>> -   if (b == NULL)
>>> +   if (b == NULL) {
>>>       b = dri2_dpy->dri2->allocateBuffer(dri2_dpy->dri_screen,
>>>                                         attachment, format,
>>>                                         dri2_surf->base.Width,
>>>                                         dri2_surf->base.Height);
>>> +      dri2_surf->dri_buffers[attachment] = b;
>>> +   }
>>>    if (b == NULL)
>>>       return -1;
>>>
>>> --
>>> 1.7.3.4
>>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eglkms.c
Type: text/x-csrc
Size: 8607 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20120410/5c10785b/attachment.c>


More information about the mesa-dev mailing list