From e54506b81a3b81683056ad48294e37d6b4b4e36b Mon Sep 17 00:00:00 2001 From: Manoj Kumar AVM Date: Thu, 11 Jun 2015 14:18:14 -0700 Subject: [PATCH] sf: Fix incorrect state reporting in dumpsys Dumpsys utility accesses layer compositionType variable with out proper protection. These variables are modified during hwc_prepare call. Existing HAL lock protection is not sufficient to address this issue. Failure to do this will result in incorrect state reporting in dumpsys. A new displayLock mutex in HWComposer will be used in both dumpsys and draw calls to ensure correct state is accessed. Change-Id: I8a57de59525adc0e089b3bed95c067c01e42b666 --- services/surfaceflinger/DisplayHardware/HWComposer.cpp | 2 ++ services/surfaceflinger/DisplayHardware/HWComposer.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/services/surfaceflinger/DisplayHardware/HWComposer.cpp b/services/surfaceflinger/DisplayHardware/HWComposer.cpp index 02c31fff2..2dad00517 100644 --- a/services/surfaceflinger/DisplayHardware/HWComposer.cpp +++ b/services/surfaceflinger/DisplayHardware/HWComposer.cpp @@ -635,6 +635,7 @@ status_t HWComposer::setFramebufferTarget(int32_t id, } status_t HWComposer::prepare() { + Mutex::Autolock _l(mDisplayLock); for (size_t i=0 ; i0] can be NULL. that display is to be ignored struct hwc_display_contents_1* mLists[MAX_HWC_DISPLAYS]; DisplayData mDisplayData[MAX_HWC_DISPLAYS]; + // protect mDisplayData from races between prepare and dump + mutable Mutex mDisplayLock; size_t mNumDisplays; cb_context* mCBContext;