Loading libs/binder/RpcState.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -953,7 +953,8 @@ processTransactInternalTailCall: // we need to process some other asynchronous transaction // first it->second.asyncTodo.push(BinderNode::AsyncTodo{ .ref = target, // checked above .ref = sp<BBinder>::fromExisting(target->localBinder()), .data = std::move(transactionData), .ancillaryFds = std::move(ancillaryFds), .asyncNumber = transaction->asyncNumber, Loading Loading @@ -1205,8 +1206,9 @@ status_t RpcState::processDecStrong(const sp<RpcSession::RpcConnection>& connect RpcMutexUniqueLock _l(mNodeMutex); auto it = mNodeForAddress.find(addr); if (it == mNodeForAddress.end()) { ALOGE("Unknown binder address %" PRIu64 " for dec strong.", addr); return OK; ALOGE("Unknown binder address %" PRIu64 " for dec strong. Terminating!", addr); (void)session->shutdownAndWait(false); return BAD_VALUE; } sp<IBinder> target = it->second.binder.promote(); Loading libs/binder/RpcState.h +2 −2 Original line number Diff line number Diff line Loading @@ -251,9 +251,9 @@ private: // CASE A - local binder we are serving // // async transaction queue, _only_ for local binder struct AsyncTodo { sp<IBinder> ref; // any transaction, including async, can only be on local binders sp<BBinder> ref; CommandData data; std::vector<std::variant<binder::unique_fd, binder::borrowed_fd>> ancillaryFds; uint64_t asyncNumber = 0; Loading Loading
libs/binder/RpcState.cpp +5 −3 Original line number Diff line number Diff line Loading @@ -953,7 +953,8 @@ processTransactInternalTailCall: // we need to process some other asynchronous transaction // first it->second.asyncTodo.push(BinderNode::AsyncTodo{ .ref = target, // checked above .ref = sp<BBinder>::fromExisting(target->localBinder()), .data = std::move(transactionData), .ancillaryFds = std::move(ancillaryFds), .asyncNumber = transaction->asyncNumber, Loading Loading @@ -1205,8 +1206,9 @@ status_t RpcState::processDecStrong(const sp<RpcSession::RpcConnection>& connect RpcMutexUniqueLock _l(mNodeMutex); auto it = mNodeForAddress.find(addr); if (it == mNodeForAddress.end()) { ALOGE("Unknown binder address %" PRIu64 " for dec strong.", addr); return OK; ALOGE("Unknown binder address %" PRIu64 " for dec strong. Terminating!", addr); (void)session->shutdownAndWait(false); return BAD_VALUE; } sp<IBinder> target = it->second.binder.promote(); Loading
libs/binder/RpcState.h +2 −2 Original line number Diff line number Diff line Loading @@ -251,9 +251,9 @@ private: // CASE A - local binder we are serving // // async transaction queue, _only_ for local binder struct AsyncTodo { sp<IBinder> ref; // any transaction, including async, can only be on local binders sp<BBinder> ref; CommandData data; std::vector<std::variant<binder::unique_fd, binder::borrowed_fd>> ancillaryFds; uint64_t asyncNumber = 0; Loading