diff options
author | Karthikeyan Periasamy <kperiasa@codeaurora.org> | 2017-08-04 18:11:09 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2017-08-04 18:12:22 -0700 |
commit | 47808e71ebe609e97d4e3f1651267980be053e92 (patch) | |
tree | a83fe6b228792a7418269640b7be3b8ff463b8c6 /libc2dcolorconvert | |
parent | b0f27061530f9ceb9168a2cd0f1b28828a78f1c5 (diff) | |
download | media-47808e71ebe609e97d4e3f1651267980be053e92.tar.gz |
libc2dcolorconvert: Fix potential dead lock
Call unlock before the execution comes out of the function call.
Change-Id: I197f6007771e15292f5212eae6c08cd92e6d9810
CRs-Fixed: 2088140
Diffstat (limited to 'libc2dcolorconvert')
-rw-r--r-- | libc2dcolorconvert/C2DColorConverter.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libc2dcolorconvert/C2DColorConverter.cpp b/libc2dcolorconvert/C2DColorConverter.cpp index c8ef2964..8f64e4b2 100644 --- a/libc2dcolorconvert/C2DColorConverter.cpp +++ b/libc2dcolorconvert/C2DColorConverter.cpp @@ -183,8 +183,10 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData, } else { srcMappedGpuAddr = (uint8_t *)getMappedGPUAddr(srcFd, srcData, mSrcSize); - if (!srcMappedGpuAddr) - return false; + if (!srcMappedGpuAddr) { + pthread_mutex_unlock(&mLock); + return false; + } if (isYUVSurface(mSrcFormat)) { ret = updateYUVSurfaceDef(srcMappedGpuAddr, srcBase, srcData, true); @@ -197,6 +199,7 @@ bool C2DColorConverter::convertC2D(int srcFd, void *srcBase, void * srcData, dstMappedGpuAddr = (uint8_t *)getMappedGPUAddr(dstFd, dstData, mDstSize); if (!dstMappedGpuAddr) { unmapGPUAddr((unsigned long)srcMappedGpuAddr); + pthread_mutex_unlock(&mLock); return false; } |