Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit abf91060 authored by Ady Abraham's avatar Ady Abraham
Browse files

SurfaceFlinger: lock mStateLock when modifying allowed configs

mAllowedDisplayConfigs should be protected by mStateLock when changing
it from the main thread in setAllowedDisplayConfigsInternal() as it is
being read by Binder threads in getAllowedDisplayConfigs().

Test: call setAllowedDisplayConfigs() and getAllowedDisplayConfigs()
      from backdoor using different threads.
Bug: 142850581

Change-Id: I569e75968aea676c96fbc648140ac49a165ffb69
Merged-In: I569e75968aea676c96fbc648140ac49a165ffb69
parent e33b0ef0
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -6242,7 +6242,7 @@ status_t SurfaceFlinger::setAllowedDisplayConfigs(const sp<IBinder>& displayToke
        return NO_ERROR;
    }

    postMessageSync(new LambdaMessage([&]() NO_THREAD_SAFETY_ANALYSIS {
    postMessageSync(new LambdaMessage([&]() {
        const auto display = getDisplayDeviceLocked(displayToken);
        if (!display) {
            ALOGE("Attempt to set allowed display configs for invalid display token %p",
@@ -6250,6 +6250,7 @@ status_t SurfaceFlinger::setAllowedDisplayConfigs(const sp<IBinder>& displayToke
        } else if (display->isVirtual()) {
            ALOGW("Attempt to set allowed display configs for virtual display");
        } else {
            Mutex::Autolock lock(mStateLock);
            setAllowedDisplayConfigsInternal(display, allowedConfigs);
        }
    }));