* Google has been tightening up mutexes by disallowing calling
pthread_mutex_destroy on an already destroyed mutex in P
* This normally isn't an issue, but Qualcomm, in their infinite
wisdom, decided to destroy a mutex in a loop in isp_module_stop_session
when they were freeing some related memory allocations
* This results in a SIGABRT in mm-qcamera-daemon from a
__fortify_fatal call in HandleUsingDestroyedMutex in libc
* To work around this, the CBNZ instruction (aka, the break condition)
in the loop was moved before the call to phtread_mutex_destroy so
that the during the 2nd (and final) iteration of the loop, it exits
*before* rather than *after* the calls to pthread_mutex_destroy
* ASM instructions:
- Before: https://gist.github.com/javelinanddart/9afdc8577134bf8ecd48b15213d66491
- After: https://gist.github.com/javelinanddart/789ba3bde8494ff4ba0b7967c93daa14
Change-Id: I36dfab9f3afb8c9e010da8c6b02c2d9eff856c07
* From kugo-user 8.0.0 OPR1.170623.026
* libadreno_utils.so is hexedited:
sed -i 's/get_gpu_pixel_alignment/get_gpu_pixel_alignmenX/g' ./proprietary/vendor/lib64/libadreno_utils.so ./proprietary/vendor/lib/libadreno_utils.so
* libadreno_utils.so is hexedited:
sed -i 's/get_gpu_pixel_alignment/get_gpu_pixel_alignmenX/g' ./proprietary/vendor/lib64/libadreno_utils.so ./proprietary/vendor/lib/libadreno_utils.so