diff --git a/init/service.cpp b/init/service.cpp index c260c0713..331cd880d 100644 --- a/init/service.cpp +++ b/init/service.cpp @@ -506,7 +506,8 @@ void Service::ConfigureMemcg() { } // Enters namespaces, sets environment variables, writes PID files and runs the service executable. -void Service::RunService(const std::vector& descriptors, InterprocessFifo fifo) { +void Service::RunService(const std::vector& descriptors, + InterprocessFifo cgroups_activated) { if (auto result = EnterNamespaces(namespaces_, name_, mount_namespace_); !result.ok()) { LOG(FATAL) << "Service '" << name_ << "' failed to set up namespaces: " << result.error(); } @@ -528,11 +529,11 @@ void Service::RunService(const std::vector& descriptors, Interproces // Wait until the cgroups have been created and until the cgroup controllers have been // activated. - Result byte = fifo.Read(); + Result byte = cgroups_activated.Read(); if (!byte.ok()) { LOG(ERROR) << name_ << ": failed to read from notification channel: " << byte.error(); } - fifo.Close(); + cgroups_activated.Close(); if (!*byte) { LOG(FATAL) << "Service '" << name_ << "' failed to start due to a fatal error"; _exit(EXIT_FAILURE); @@ -597,8 +598,11 @@ Result Service::Start() { return {}; } - InterprocessFifo fifo; - OR_RETURN(fifo.Initialize()); + InterprocessFifo cgroups_activated; + + if (Result result = cgroups_activated.Initialize(); !result.ok()) { + return result; + } if (Result result = CheckConsole(); !result.ok()) { return result; @@ -656,11 +660,11 @@ Result Service::Start() { if (pid == 0) { umask(077); - fifo.CloseWriteFd(); - RunService(descriptors, std::move(fifo)); + cgroups_activated.CloseWriteFd(); + RunService(descriptors, std::move(cgroups_activated)); _exit(127); } else { - fifo.CloseReadFd(); + cgroups_activated.CloseReadFd(); } if (pid < 0) { @@ -689,7 +693,7 @@ Result Service::Start() { limit_percent_ != -1 || !limit_property_.empty(); errno = -createProcessGroup(proc_attr_.uid, pid_, use_memcg); if (errno != 0) { - Result result = fifo.Write(0); + Result result = cgroups_activated.Write(0); if (!result.ok()) { return Error() << "Sending notification failed: " << result.error(); } @@ -713,7 +717,7 @@ Result Service::Start() { LmkdRegister(name_, proc_attr_.uid, pid_, oom_score_adjust_); } - if (Result result = fifo.Write(1); !result.ok()) { + if (Result result = cgroups_activated.Write(1); !result.ok()) { return Error() << "Sending cgroups activated notification failed: " << result.error(); }