diff --git a/private/compat/26.0/26.0.ignore.cil b/private/compat/26.0/26.0.ignore.cil index c3d1f13106d50cc61363bc31d868c3a3087ed2ae..f4d6ee35c88676c6240beef158a5902b1805246a 100644 --- a/private/compat/26.0/26.0.ignore.cil +++ b/private/compat/26.0/26.0.ignore.cil @@ -43,7 +43,8 @@ wpantund wpantund_exec wpantund_service - wpantund_tmpfs)) + wpantund_tmpfs + wm_trace_data_file)) ;; private_objects - a collection of types that were labeled differently in ;; older policy, but that should not remain accessible to vendor policy. diff --git a/private/dumpstate.te b/private/dumpstate.te index b8f81526cddc1f713b42a4f2e83c97882c1d82dd..24a57de96d0cf29f95f020990d52020327b3d76f 100644 --- a/private/dumpstate.te +++ b/private/dumpstate.te @@ -18,6 +18,12 @@ allow dumpstate debugfs_trace_marker:file getattr; allow dumpstate atrace_exec:file rx_file_perms; allow dumpstate storaged_exec:file rx_file_perms; +# /data/misc/wmtrace for wm traces +userdebug_or_eng(` + allow dumpstate wm_trace_data_file:dir r_dir_perms; + allow dumpstate wm_trace_data_file:file r_file_perms; +') + # Allow dumpstate to make binder calls to storaged service binder_call(dumpstate, storaged) diff --git a/private/file.te b/private/file.te index 6994202ea83a145bb4d7997725196079f7e16efb..5b4dbc804f0d635bdb74b67e4ce5bcf69c6a23b2 100644 --- a/private/file.te +++ b/private/file.te @@ -3,3 +3,6 @@ type config_gz, fs_type; # /data/misc/storaged type storaged_data_file, file_type, data_file_type, core_data_file_type; + +# /data/misc/wmtrace for wm traces +type wm_trace_data_file, file_type, data_file_type, core_data_file_type; diff --git a/private/file_contexts b/private/file_contexts index eda35f88d0ba4dc21b56ce55818bc9b45266f3df..58e87c8a0cab0a34700f9d3550cb151256838a6b 100644 --- a/private/file_contexts +++ b/private/file_contexts @@ -388,6 +388,7 @@ /data/misc/update_engine_log(/.*)? u:object_r:update_engine_log_data_file:s0 /data/system/heapdump(/.*)? u:object_r:heapdump_data_file:s0 /data/misc/trace(/.*)? u:object_r:method_trace_data_file:s0 +/data/misc/wmtrace(/.*)? u:object_r:wm_trace_data_file:s0 # TODO(calin) label profile reference differently so that only # profman run as a special user can write to them /data/misc/profiles/cur(/.*)? u:object_r:user_profile_data_file:s0 diff --git a/private/surfaceflinger.te b/private/surfaceflinger.te index ed67597e627a4bd82f3286d5eaad43a78ecfc723..5fbd9ab263cefc5035ce9f0cb33d7922670e2d1e 100644 --- a/private/surfaceflinger.te +++ b/private/surfaceflinger.te @@ -52,6 +52,12 @@ set_prop(surfaceflinger, ctl_bootanim_prop) allow surfaceflinger appdomain:fd use; allow surfaceflinger app_data_file:file { read write }; +# Allow writing surface traces to /data/misc/wmtrace. +userdebug_or_eng(` + allow surfaceflinger wm_trace_data_file:dir rw_dir_perms; + allow surfaceflinger wm_trace_data_file:file { getattr setattr create w_file_perms }; +') + # Use socket supplied by adbd, for cmd gpu vkjson etc. allow surfaceflinger adbd:unix_stream_socket { read write getattr }; diff --git a/private/system_server.te b/private/system_server.te index f8e88066455815f25b51ce7fbceb9f4a1179bbdd..feb2de9766e3e8a0a777f76220ff68b20ed89c92 100644 --- a/private/system_server.te +++ b/private/system_server.te @@ -643,6 +643,10 @@ userdebug_or_eng(` # Allow system server to read dmesg allow system_server kernel:system syslog_read; + + # Allow writing window traces in /data/misc/wmtrace. + allow system_server wm_trace_data_file:dir rw_dir_perms; + allow system_server wm_trace_data_file:file { getattr setattr create w_file_perms }; ') # For AppFuse.