summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMuncheol Park <mncheol.park@samsung.com>2023-05-08 12:22:00 +0900
committerLong Ling <longling@google.com>2023-05-16 21:19:33 +0000
commit361a1c1ec9f07773283ce7cea5403a3a8fa01bf2 (patch)
tree0efbdfd0b4f8c24f49355ec38ea423273ac6a8eb
parent90179609edfcd74b801c966d6c960ebef3354a5a (diff)
downloadcommon-361a1c1ec9f07773283ce7cea5403a3a8fa01bf2.tar.gz
libhwc2.1 : reset assigned resource when a layer is destroyed
HWC service is crashed due to accessing memory which is already freed. In destroyLayer, it only delete layer object and pointer in ExynosDisplay. But ExynosMPP still have pointer of deleted layer object in mAssignedSource. So when validateDisplay called, it refers the freed memory in resetAssignedState() layer->resetAssignedResource() is added before delete layer object so that remove layer info in ExynosMPP. Bug: 264510390 Test: stop surfaceflinger by command "setprop ctl.stop surfaceflinger" Change-Id: I5191ae334c7566c8fe503c06784aae0e6be1ea81 (cherry picked from commit 261c8ec1328812c2e99e9cac86c635ba875990bb)
-rw-r--r--libhwc2.1/libdevice/ExynosDisplay.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/libhwc2.1/libdevice/ExynosDisplay.cpp b/libhwc2.1/libdevice/ExynosDisplay.cpp
index fe927ae..26fd635 100644
--- a/libhwc2.1/libdevice/ExynosDisplay.cpp
+++ b/libhwc2.1/libdevice/ExynosDisplay.cpp
@@ -1173,6 +1173,7 @@ int32_t ExynosDisplay::destroyLayer(hwc2_layer_t outLayer) {
}
mDisplayInterface->destroyLayer(layer);
+ layer->resetAssignedResource();
delete layer;