libhwc2.1: fix null pointer crash in setupHWResource
mainDisp could be null if all displays are OFF. This could happen when
the client is destoyed after setting all displays to OFF.
Bug: 304976052
Test: atest VtsHalGraphicsComposer3_TargetTest
Change-Id: I3a3687d1681a5b61d207aaf4c1212b058b9cf704
diff --git a/libhwc2.1/libresource/ExynosResourceManagerModule.cpp b/libhwc2.1/libresource/ExynosResourceManagerModule.cpp
index 0380f3d..255ea66 100644
--- a/libhwc2.1/libresource/ExynosResourceManagerModule.cpp
+++ b/libhwc2.1/libresource/ExynosResourceManagerModule.cpp
@@ -162,12 +162,13 @@
const auto &TDMInfoIdx = (HWAttrs.at(tdmAttrId).loadSharing == LS_DPUF)
? std::make_pair(blkId, AXI_DONT_CARE)
: std::make_pair(blkId, axiId);
- const uint32_t mainAmount =
- (minorDisp != nullptr) ? hwResource.mainAmount
- : hwResource.mainAmount + hwResource.minorAmount;
-
- mainDisp->mDisplayTDMInfo[TDMInfoIdx]
- .initTDMInfo(DisplayTDMInfo::ResourceAmount_t{mainAmount}, tdmAttrId);
+ if (mainDisp != nullptr) {
+ const uint32_t mainAmount = (minorDisp != nullptr)
+ ? hwResource.mainAmount
+ : hwResource.mainAmount + hwResource.minorAmount;
+ mainDisp->mDisplayTDMInfo[TDMInfoIdx]
+ .initTDMInfo(DisplayTDMInfo::ResourceAmount_t{mainAmount}, tdmAttrId);
+ }
if (minorDisp != nullptr) {
const uint32_t minorAmount = hwResource.minorAmount;
minorDisp->mDisplayTDMInfo[TDMInfoIdx]