From 1369dfcaad340facc991abe064a06c0341a76c64 Mon Sep 17 00:00:00 2001
From: Mark Salyzyn <salyzyn@google.com>
Date: Mon, 2 Jul 2018 08:13:40 -0700
Subject: [PATCH] fs_mgr: add /mnt/scratch to possible overlayfs support
 directories

A default set of options are available, but can override in a fstab
overlay entry with upperdir=, lowerdir= to the same mount point,
workdir=.  The default is a valid /mnt/scratch/overlay/
or /cache/overlay/ directory, with .../<mount_point>/upper and
.../<mount_point>/work, associated with each system partition
<mount_point>.

Test: manual
Bug: 109821005
Change-Id: I5662c01fad17d105665be065f6dcd7c3fdc40d95
---
 private/file_contexts           | 1 +
 private/file_contexts_overlayfs | 3 +++
 public/file.te                  | 2 +-
 public/init.te                  | 4 ++--
 4 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/private/file_contexts b/private/file_contexts
index 2e78b80ae..264735d6d 100644
--- a/private/file_contexts
+++ b/private/file_contexts
@@ -535,6 +535,7 @@
 # Overlayfs support directories
 #
 /cache/overlay(/.*)?            u:object_r:overlayfs_file:s0
+/mnt/scratch(/.*)?              u:object_r:overlayfs_file:s0
 
 /data/cache(/.*)?		u:object_r:cache_file:s0
 /data/cache/recovery(/.*)?	u:object_r:cache_recovery_file:s0
diff --git a/private/file_contexts_overlayfs b/private/file_contexts_overlayfs
index 00902c2da..e472fade5 100644
--- a/private/file_contexts_overlayfs
+++ b/private/file_contexts_overlayfs
@@ -4,3 +4,6 @@
 /cache/overlay/(system|product)/upper       u:object_r:system_file:s0
 /cache/overlay/(vendor|odm)/upper           u:object_r:vendor_file:s0
 /cache/overlay/oem/upper                    u:object_r:vendor_file:s0
+/mnt/scratch/overlay/(system|product)/upper u:object_r:system_file:s0
+/mnt/scratch/overlay/(vendor|odm)/upper     u:object_r:vendor_file:s0
+/mnt/scratch/overlay/oem/upper              u:object_r:vendor_file:s0
diff --git a/public/file.te b/public/file.te
index 016807ee7..b0e36a628 100644
--- a/public/file.te
+++ b/public/file.te
@@ -310,7 +310,7 @@ type system_app_data_file, file_type, data_file_type, core_data_file_type, mlstr
 # Compatibility with type name used in Android 4.3 and 4.4.
 # Default type for anything under /cache
 type cache_file, file_type, data_file_type, core_data_file_type, mlstrustedobject;
-# Type for /cache/overlay
+# Type for /cache/overlay /mnt/scratch/overlay
 type overlayfs_file, file_type, data_file_type, core_data_file_type;
 # Type for /cache/backup_stage/* (fd interchange with apps)
 type cache_backup_file, file_type, data_file_type, core_data_file_type, mlstrustedobject;
diff --git a/public/init.te b/public/init.te
index c337c82ae..42d364f02 100644
--- a/public/init.te
+++ b/public/init.te
@@ -297,9 +297,9 @@ allow init self:global_capability2_class_set syslog;
 # init access to /proc.
 r_dir_file(init, proc_net_type)
 
-# Overlayfs workdir write access check during mount to permit remount,rw
 userdebug_or_eng(`
-  allow init overlayfs_file:dir { relabelfrom write };
+  # Overlayfs workdir write access check during mount to permit remount,rw
+  allow init overlayfs_file:dir { relabelfrom mounton write };
 ')
 
 allow init {
-- 
GitLab