summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Ross <andy.ross@windriver.com>2013-06-04 11:32:29 -0700
committerAndy Ross <andy.ross@windriver.com>2013-06-12 15:57:30 -0700
commit8ab337a4ef935d112951cefefd8dead4fdcb3c5b (patch)
treecabb40dca7c7233c422e847718f5f0be9f3862c3
parent04978c8f3086255bc0b83c407a1d605c19527253 (diff)
downloadexternal_drm_gralloc-8ab337a4ef935d112951cefefd8dead4fdcb3c5b.zip
external_drm_gralloc-8ab337a4ef935d112951cefefd8dead4fdcb3c5b.tar.gz
external_drm_gralloc-8ab337a4ef935d112951cefefd8dead4fdcb3c5b.tar.bz2
Fix refcounting of mapped bo's
Buffer objects created locally by gralloc_drm_bo_create() would have their refcount properly initialized to 1, but those received from other processes via the drv alloc function would be left at zero, so the delete check in gralloc_drm_bo_decref() would not destroy them as the refcount would wrap negative. The buffer would then leak forever until the mapping process (often surfaceflinger!) exitted. Issue: AXIA-2991 Change-Id: I1a0c73b21cfbc67b441970002fd71712112e1871 Signed-off-by: Andy Ross <andy.ross@windriver.com>
-rw-r--r--gralloc_drm.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gralloc_drm.c b/gralloc_drm.c
index 27a49c5..bd38d57 100644
--- a/gralloc_drm.c
+++ b/gralloc_drm.c
@@ -207,6 +207,7 @@ static struct gralloc_drm_bo_t *validate_handle(buffer_handle_t _handle,
bo->drm = drm;
bo->imported = 1;
bo->handle = handle;
+ bo->refcount = 1;
}
handle->data_owner = gralloc_drm_get_pid();