summaryrefslogtreecommitdiff
path: root/init/service_utils.cpp
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-06-13 02:09:12 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-06-13 02:09:12 +0000
commitd3011a00ae3c3d232b778e5139a44e22cb89d587 (patch)
tree1e00514239beb80e012935f9aa48cf5d061bc87a /init/service_utils.cpp
parent32ab56890a47c495101d3d1a689703bbbf70a43a (diff)
parentfa65517cd73ef340e9a2decc59af814ded969daa (diff)
Snap for 6586161 from fa65517cd73ef340e9a2decc59af814ded969daa to sc-release
Change-Id: I9f9b7239342c2bb743382b58ae3a498b79d931ff
Diffstat (limited to 'init/service_utils.cpp')
-rw-r--r--init/service_utils.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/init/service_utils.cpp b/init/service_utils.cpp
index 484c2c89f1..05e632b68c 100644
--- a/init/service_utils.cpp
+++ b/init/service_utils.cpp
@@ -194,7 +194,8 @@ Result<Descriptor> FileDescriptor::Create() const {
return Descriptor(ANDROID_FILE_ENV_PREFIX + name, std::move(fd));
}
-Result<void> EnterNamespaces(const NamespaceInfo& info, const std::string& name, bool pre_apexd) {
+Result<void> EnterNamespaces(const NamespaceInfo& info, const std::string& name,
+ std::optional<MountNamespace> override_mount_namespace) {
for (const auto& [nstype, path] : info.namespaces_to_enter) {
if (auto result = EnterNamespace(nstype, path.c_str()); !result.ok()) {
return result;
@@ -202,9 +203,10 @@ Result<void> EnterNamespaces(const NamespaceInfo& info, const std::string& name,
}
#if defined(__ANDROID__)
- if (pre_apexd) {
- if (!SwitchToBootstrapMountNamespaceIfNeeded()) {
- return Error() << "could not enter into the bootstrap mount namespace";
+ if (override_mount_namespace.has_value()) {
+ if (auto result = SwitchToMountNamespaceIfNeeded(override_mount_namespace.value());
+ !result.ok()) {
+ return result;
}
}
#endif