Give installers and apps with "full" access the pass_through view.

This enables the /Android bind-mount to use the sdcardfs "default"
view. Installers can't use that view because they require write access
to the OBB directory.

Bug: 146189163
Test: atest AdoptableHostTest
Change-Id: I9a40f68af10189bfb03a86a1e814638d623c8a2e
This commit is contained in:
Martijn Coenen
2019-12-13 16:44:32 +01:00
parent fc9c3b6d96
commit 6a01faea47

View File

@@ -714,8 +714,16 @@ static void MountEmulatedStorage(uid_t uid, jint mount_mode,
CreateDir(user_source, 0751, AID_ROOT, AID_ROOT, fail_fn);
if (isFuse) {
BindMount(mount_mode == MOUNT_EXTERNAL_PASS_THROUGH ? pass_through_source : user_source,
"/storage", fail_fn);
if (mount_mode == MOUNT_EXTERNAL_PASS_THROUGH || mount_mode ==
MOUNT_EXTERNAL_INSTALLER || mount_mode == MOUNT_EXTERNAL_FULL) {
// For now, MediaProvider, installers and "full" get the pass_through mount
// view, which is currently identical to the sdcardfs write view.
//
// TODO(b/146189163): scope down MOUNT_EXTERNAL_INSTALLER
BindMount(pass_through_source, "/storage", fail_fn);
} else {
BindMount(user_source, "/storage", fail_fn);
}
} else {
const std::string& storage_source = ExternalStorageViews[mount_mode];
BindMount(storage_source, "/storage", fail_fn);