From 1ac84c46e89978ba0528a04b329f0f897ea61e48 Mon Sep 17 00:00:00 2001 From: Steven Moreland Date: Wed, 10 Jul 2019 17:51:27 -0700 Subject: Init ProcessState w/ initWithDriver. vndservicemanager was calling 'self' before 'initWithDriver': ProcessState::self()->initWithDriver(...); However, 'self' inits the driver. On devices with the VNDK, this caused no problem because libbinder automatically inits to the correct driver node. However, on legacy devices, vndservicemanager tried to use /dev/binder unsuccessfully. Bug: 137216568 Test: TH Change-Id: I8dc9dac0592784a16ae0abd270718ae353aa81c3 --- cmds/servicemanager/main.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cmds/servicemanager/main.cpp b/cmds/servicemanager/main.cpp index c8ceb42ac8..9f6193b97a 100644 --- a/cmds/servicemanager/main.cpp +++ b/cmds/servicemanager/main.cpp @@ -38,14 +38,13 @@ int main(int argc, char** argv) { android::base::InitLogging(nullptr, &android::base::KernelLogger); - ProcessState::self()->initWithDriver(driver); - ProcessState::self()->setThreadPoolMaxThreadCount(0); - ProcessState::self()->setCallRestriction( - ProcessState::CallRestriction::FATAL_IF_NOT_ONEWAY); + sp ps = ProcessState::initWithDriver(driver); + ps->setThreadPoolMaxThreadCount(0); + ps->setCallRestriction(ProcessState::CallRestriction::FATAL_IF_NOT_ONEWAY); sp manager = new ServiceManager(std::make_unique()); IPCThreadState::self()->setTheContextObject(manager); - ProcessState::self()->becomeContextManager(nullptr, nullptr); + ps->becomeContextManager(nullptr, nullptr); IPCThreadState::self()->joinThreadPool(); -- cgit v1.2.3-59-g8ed1b