From d345906b144806fe01976c9315a894dc1643aa19 Mon Sep 17 00:00:00 2001
From: Jin Qian <jinqian@google.com>
Date: Wed, 11 Jan 2017 16:20:49 -0800
Subject: [PATCH] Define policy for /proc/uid_io/stats

New procfs file read by storaged to dump fg/bg IO usage.

Remove kmsg rule since it's no longer used by storaged.

Allow storaged to find permission_service to translate UID
to package name.

Test: adb shell storaged -u
Bug: 34198239
Change-Id: I74654662c75571cbe166cf2b8cbab84828218cbd
---
 private/genfs_contexts | 1 +
 private/storaged.te    | 8 +++++---
 public/file.te         | 1 +
 3 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/private/genfs_contexts b/private/genfs_contexts
index 638610112..efdfb422c 100644
--- a/private/genfs_contexts
+++ b/private/genfs_contexts
@@ -32,6 +32,7 @@ genfscon proc /timer_stats u:object_r:proc_timer:s0
 genfscon proc /tty/drivers u:object_r:proc_tty_drivers:s0
 genfscon proc /uid_cputime/show_uid_stat u:object_r:proc_uid_cputime_showstat:s0
 genfscon proc /uid_cputime/remove_uid_range u:object_r:proc_uid_cputime_removeuid:s0
+genfscon proc /uid_io/stats u:object_r:proc_uid_io_stats:s0
 genfscon proc /uid_procstat/set u:object_r:proc_uid_procstat_set:s0
 genfscon proc /zoneinfo u:object_r:proc_zoneinfo:s0
 
diff --git a/private/storaged.te b/private/storaged.te
index 684f617bc..6b7fa50ce 100644
--- a/private/storaged.te
+++ b/private/storaged.te
@@ -4,14 +4,14 @@ type storaged_exec, exec_type, file_type;
 
 init_daemon_domain(storaged)
 
-# Write to /dev/kmsg (opened in init)
-allow storaged kmsg_device:chr_file { write append };
-
 # Read access to pseudo filesystems
 r_dir_file(storaged, sysfs_type)
 r_dir_file(storaged, proc_net)
 r_dir_file(storaged, domain)
 
+# Read /proc/uid_io/stats
+allow storaged proc_uid_io_stats:file r_file_perms;
+
 allow storaged self:capability { setgid setuid sys_nice sys_ptrace };
 
 userdebug_or_eng(`
@@ -22,6 +22,8 @@ userdebug_or_eng(`
 
 # Binder permissions
 allow storaged storaged_service:service_manager add;
+allow storaged permission_service:service_manager find;
+
 binder_use(storaged)
 binder_call(storaged, system_server)
 
diff --git a/public/file.te b/public/file.te
index 99c2a9e57..077b25a5f 100644
--- a/public/file.te
+++ b/public/file.te
@@ -23,6 +23,7 @@ type proc_timer, fs_type;
 type proc_tty_drivers, fs_type;
 type proc_uid_cputime_showstat, fs_type;
 type proc_uid_cputime_removeuid, fs_type;
+type proc_uid_io_stats, fs_type;
 type proc_uid_procstat_set, fs_type;
 type proc_zoneinfo, fs_type;
 type selinuxfs, fs_type, mlstrustedobject;
-- 
GitLab