drm_gralloc: fix random crash with wildpointer am: 99e2a21625 am: 63dd4c8976 am: 19d91eec53
am: e19443ea00

Change-Id: Iade8059842115cf563a90cb44a37339f1ef22801
diff --git a/gralloc_drm.cpp b/gralloc_drm.cpp
index 6f90a84..b0328b0 100644
--- a/gralloc_drm.cpp
+++ b/gralloc_drm.cpp
@@ -194,7 +194,15 @@
  */
 int gralloc_drm_handle_register(buffer_handle_t handle, struct gralloc_drm_t *drm)
 {
-	return (validate_handle(handle, drm)) ? 0 : -EINVAL;
+	struct gralloc_drm_bo_t *bo;
+
+	bo = validate_handle(handle, drm);
+	if (!bo)
+		return -EINVAL;
+
+	bo->refcount++;
+
+	return 0;
 }
 
 /*
@@ -208,6 +216,7 @@
 	if (!bo)
 		return -EINVAL;
 
+	gralloc_drm_bo_decref(bo);
 	if (bo->imported)
 		gralloc_drm_bo_decref(bo);