diff options
author | Jooyung Han <jooyung@google.com> | 2020-06-12 02:56:13 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-06-12 02:56:13 +0000 |
commit | 7294acc88d1237a347480ffb62e2bdc49b83f10a (patch) | |
tree | 1e00514239beb80e012935f9aa48cf5d061bc87a /init/builtins.cpp | |
parent | 52aa39beca7509482f2eb35336448d4afffc126f (diff) | |
parent | ef843ba6b947f24bd9b3bc009f0dffc3edcd9bac (diff) |
Merge "init: start ueventd in the default mount namespace" am: 7cc98e212b am: 9b07c52de0 am: 971add2022 am: 8ca831d2b1 am: ef843ba6b9
Original change: https://android-review.googlesource.com/c/platform/system/core/+/1325695
Change-Id: I7acebca401f696aa83ffbf0e53ff9bbec08904cb
Diffstat (limited to 'init/builtins.cpp')
-rw-r--r-- | init/builtins.cpp | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/init/builtins.cpp b/init/builtins.cpp index 0ac66f2727..0b456e70a6 100644 --- a/init/builtins.cpp +++ b/init/builtins.cpp @@ -1221,6 +1221,20 @@ static Result<void> GenerateLinkerConfiguration() { return {}; } +static Result<void> MountLinkerConfigForDefaultNamespace() { + // No need to mount linkerconfig for default mount namespace if the path does not exist (which + // would mean it is already mounted) + if (access("/linkerconfig/default", 0) != 0) { + return {}; + } + + if (mount("/linkerconfig/default", "/linkerconfig", nullptr, MS_BIND | MS_REC, nullptr) != 0) { + return ErrnoError() << "Failed to mount linker configuration for default mount namespace."; + } + + return {}; +} + static bool IsApexUpdatable() { static bool updatable = android::sysprop::ApexProperties::updatable().value_or(false); return updatable; @@ -1319,11 +1333,14 @@ static Result<void> do_perform_apex_config(const BuiltinArguments& args) { } static Result<void> do_enter_default_mount_ns(const BuiltinArguments& args) { - if (SwitchToDefaultMountNamespace()) { - return {}; - } else { - return Error() << "Failed to enter into default mount namespace"; + if (auto result = SwitchToMountNamespaceIfNeeded(NS_DEFAULT); !result.ok()) { + return result.error(); + } + if (auto result = MountLinkerConfigForDefaultNamespace(); !result.ok()) { + return result.error(); } + LOG(INFO) << "Switched to default mount namespace"; + return {}; } // Builtin-function-map start |