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

Commit 6f1c2fc7 authored by Steven Moreland's avatar Steven Moreland Committed by Automerger Merge Worker
Browse files

Merge "libfakeservicemanager: no hold lock in clear" into main am: c2124f89...

Merge "libfakeservicemanager: no hold lock in clear" into main am: c2124f89 am: b7c5a336 am: 97b953a7

Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/2892105



Change-Id: Iafd80b127ad915fbf1d459c929b1e1719967bd39
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 561778c9 97b953a7
Loading
Loading
Loading
Loading
+13 −3
Original line number Diff line number Diff line
@@ -122,10 +122,20 @@ std::vector<IServiceManager::ServiceDebugInfo> FakeServiceManager::getServiceDeb
}

void FakeServiceManager::clear() {
    std::lock_guard<std::mutex> l(mMutex);
    std::map<String16, sp<IBinder>> backup;

    {
      std::lock_guard<std::mutex> l(mMutex);
      backup = mNameToService;
      mNameToService.clear();
    }

    // destructors may access FSM, so avoid recursive lock
    backup.clear(); // explicit

    // TODO: destructors may have added more services here - may want
    // to check this or abort
}
}  // namespace android

[[clang::no_destroy]] static sp<FakeServiceManager> gFakeServiceManager;