diff --git a/init/first_stage_init.cpp b/init/first_stage_init.cpp index e11d89768..7cf4c3fbd 100644 --- a/init/first_stage_init.cpp +++ b/init/first_stage_init.cpp @@ -155,6 +155,10 @@ int FirstStageMain(int argc, char** argv) { // part of the product partition, e.g. because they are mounted read-write. CHECKCALL(mkdir("/mnt/product", 0755)); + // /apex is used to mount APEXes + CHECKCALL(mount("tmpfs", "/apex", "tmpfs", MS_NOEXEC | MS_NOSUID | MS_NODEV, + "mode=0755,uid=0,gid=0")); + #undef CHECKCALL // Now that tmpfs is mounted on /dev and we have /dev/kmsg, we can actually diff --git a/init/selinux.cpp b/init/selinux.cpp index ee302c168..3fadfedbe 100644 --- a/init/selinux.cpp +++ b/init/selinux.cpp @@ -459,6 +459,8 @@ void SelinuxRestoreContext() { selinux_android_restorecon("/dev/block", SELINUX_ANDROID_RESTORECON_RECURSE); selinux_android_restorecon("/dev/device-mapper", 0); + + selinux_android_restorecon("/apex", 0); } int SelinuxKlogCallback(int type, const char* fmt, ...) { diff --git a/rootdir/init.rc b/rootdir/init.rc index 78d9e3091..22a0d1e59 100644 --- a/rootdir/init.rc +++ b/rootdir/init.rc @@ -278,12 +278,6 @@ on init write /dev/cpu_variant:${ro.bionic.2nd_arch} ${ro.bionic.2nd_cpu_variant} chmod 0444 /dev/cpu_variant:${ro.bionic.2nd_arch} - # Setup APEX mount point and its security context - mount tmpfs tmpfs /apex nodev noexec nosuid - chmod 0755 /apex - chown root root /apex - restorecon /apex - # Start logd before any other services run to ensure we capture all of their logs. start logd