From e90e2bb8221b2671ecd2e19f48201b5871f3c6a5 Mon Sep 17 00:00:00 2001 From: Benjamin Gaignard Date: Fri, 17 May 2013 09:16:08 +0200 Subject: [PATCH] dmabuf: Make sure that memory is unmapped before releasing it Be sure that memory is unmapped before releasing it. https://bugzilla.gnome.org/show_bug.cgi?id=700411 --- gst-libs/gst/allocators/gstdmabuf.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/gst-libs/gst/allocators/gstdmabuf.c b/gst-libs/gst/allocators/gstdmabuf.c index 95d26bbce4..4a95f47566 100644 --- a/gst-libs/gst/allocators/gstdmabuf.c +++ b/gst-libs/gst/allocators/gstdmabuf.c @@ -62,17 +62,18 @@ GST_DEBUG_CATEGORY_STATIC (dmabuf_debug); #define GST_CAT_DEFAULT dmabuf_debug static void -gst_dmabuf_allocator_free (GstAllocator * allocator, GstMemory * mem) +gst_dmabuf_allocator_free (GstAllocator * allocator, GstMemory * gmem) { - GstDmaBufMemory *dbmem = (GstDmaBufMemory *) mem; + GstDmaBufMemory *mem = (GstDmaBufMemory *) gmem; - if (dbmem->data) - g_warning ("Freeing memory still mapped"); - - close (dbmem->fd); - g_mutex_clear (&dbmem->lock); - g_slice_free (GstDmaBufMemory, dbmem); - GST_DEBUG ("%p: freed", dbmem); + if (mem->data) { + g_warning (G_STRLOC ":%s: Freeing memory %p still mapped", G_STRFUNC, mem); + munmap ((void *) mem->data, mem->mmap_size); + } + close (mem->fd); + g_mutex_clear (&mem->lock); + g_slice_free (GstDmaBufMemory, mem); + GST_DEBUG ("%p: freed", mem); } static gpointer