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

Commit adc5dca8 authored by Steven Moreland's avatar Steven Moreland
Browse files

libbinder: RPC save notify on transferring thread

We don't need to notify RpcServer when thread ownership is moved from a
connection thread to a session thread since this can't affect shutdown.

Bug: 185167543
Test: binderRpcTest, run binder_rpc_fuzzer for a minute
Change-Id: I8077beabe8176470f95b17a1f93c3fb731fdf8ca
parent 13765f7a
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -258,18 +258,12 @@ void RpcServer::establishConnection(sp<RpcServer>&& server, base::unique_fd clie
        LOG_ALWAYS_FATAL_IF(threadId == server->mConnectingThreads.end(),
                            "Must establish connection on owned thread");
        thisThread = std::move(threadId->second);
        ScopeGuard detachGuard = [&]() { thisThread.detach(); };
        server->mConnectingThreads.erase(threadId);

        // TODO(b/185167543): we currently can't disable this because we don't
        // shutdown sessions as well, only the server itself. So, we need to
        // keep this separate from the detachGuard, since we temporarily want to
        // give a notification even when we pass ownership of the thread to
        // a session.
        ScopeGuard threadLifetimeGuard = [&]() {
        ScopeGuard detachGuard = [&]() {
            thisThread.detach();
            _l.unlock();
            server->mShutdownCv.notify_all();
        };
        server->mConnectingThreads.erase(threadId);

        if (!idValid) {
            return;