diff options
author | Mark Yao <mark.yao@rock-chips.com> | 2016-07-01 19:10:34 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-07-01 19:10:34 +0000 |
commit | e19443ea00d3b27622590b920819e53da68f7fda (patch) | |
tree | 7540263fd9441ccfd4de8b7c4dc378f1e34197e1 | |
parent | cda66b80878c0c0f0799a145b41895c1149da88a (diff) | |
parent | 19d91eec5357e7cebde797a48de8609ae3a89484 (diff) | |
download | drm_gralloc-android-o-preview-3.tar.gz |
drm_gralloc: fix random crash with wildpointer am: 99e2a21625 am: 63dd4c8976android-wear-o-preview-4android-wear-o-preview-3android-o-preview-4android-o-preview-3android-o-preview-2android-o-preview-1android-o-iot-preview-5android-n-mr2-preview-2android-n-mr2-preview-1android-n-iot-preview-4sdk-releaseo-previewo-iot-preview-5n-iot-preview-4
am: 19d91eec53
Change-Id: I4e23e80ed6b8fdec3d5cfb983427591b8ab4597e
-rw-r--r-- | gralloc_drm.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
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 @@ static struct gralloc_drm_bo_t *validate_handle(buffer_handle_t _handle, */ 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 @@ int gralloc_drm_handle_unregister(buffer_handle_t handle) if (!bo) return -EINVAL; + gralloc_drm_bo_decref(bo); if (bo->imported) gralloc_drm_bo_decref(bo); |