Mark Salyzyn | e4b3e0b | 2018-02-20 11:02:39 -0800 | [diff] [blame] | 1 | # llkd Live LocK Daemon |
| 2 | typeattribute llkd coredomain; |
| 3 | |
| 4 | init_daemon_domain(llkd) |
| 5 | |
Mark Salyzyn | 275ea12 | 2018-08-07 16:03:47 -0700 | [diff] [blame] | 6 | get_prop(llkd, llkd_prop) |
| 7 | |
Mark Salyzyn | e4b3e0b | 2018-02-20 11:02:39 -0800 | [diff] [blame] | 8 | allow llkd self:global_capability_class_set kill; |
Mark Salyzyn | 275ea12 | 2018-08-07 16:03:47 -0700 | [diff] [blame] | 9 | userdebug_or_eng(` |
| 10 | allow llkd self:global_capability_class_set sys_ptrace; |
| 11 | allow llkd self:global_capability_class_set dac_override; |
| 12 | ') |
Mark Salyzyn | e4b3e0b | 2018-02-20 11:02:39 -0800 | [diff] [blame] | 13 | |
| 14 | # llkd optionally locks itself in memory, to prevent it from being |
| 15 | # swapped out and unable to discover a kernel in live-lock state. |
| 16 | allow llkd self:global_capability_class_set ipc_lock; |
| 17 | |
| 18 | # Send kill signals to _anyone_ suffering from Live Lock |
| 19 | allow llkd domain:process sigkill; |
| 20 | |
Mark Salyzyn | 275ea12 | 2018-08-07 16:03:47 -0700 | [diff] [blame] | 21 | # read stack to check for Live Lock |
| 22 | userdebug_or_eng(` |
| 23 | allow llkd { |
| 24 | domain |
Nick Kralevich | 095fbea | 2018-09-13 11:07:14 -0700 | [diff] [blame] | 25 | -kernel |
Mark Salyzyn | 275ea12 | 2018-08-07 16:03:47 -0700 | [diff] [blame] | 26 | -keystore |
| 27 | -init |
| 28 | -llkd |
Nick Kralevich | 095fbea | 2018-09-13 11:07:14 -0700 | [diff] [blame] | 29 | -ueventd |
| 30 | -vendor_init |
Mark Salyzyn | 275ea12 | 2018-08-07 16:03:47 -0700 | [diff] [blame] | 31 | }:process ptrace; |
| 32 | ') |
| 33 | |
Mark Salyzyn | e4b3e0b | 2018-02-20 11:02:39 -0800 | [diff] [blame] | 34 | # live lock watchdog process allowed to look through /proc/ |
| 35 | allow llkd domain:dir r_dir_perms; |
| 36 | allow llkd domain:file r_file_perms; |
| 37 | allow llkd domain:lnk_file read; |
| 38 | # Set /proc/sys/kernel/hung_task_* |
| 39 | allow llkd proc_hung_task:file rw_file_perms; |
| 40 | |
| 41 | # live lock watchdog process allowed to dump process trace and |
| 42 | # reboot because orderly shutdown may not be possible. |
| 43 | allow llkd proc_sysrq:file w_file_perms; |
| 44 | allow llkd kmsg_device:chr_file w_file_perms; |
| 45 | |
| 46 | ### neverallow rules |
| 47 | |
| 48 | neverallow { domain -init } llkd:process { dyntransition transition }; |
Mark Salyzyn | 275ea12 | 2018-08-07 16:03:47 -0700 | [diff] [blame] | 49 | neverallow { domain userdebug_or_eng(`-crash_dump') } llkd:process ptrace; |
Mark Salyzyn | e4b3e0b | 2018-02-20 11:02:39 -0800 | [diff] [blame] | 50 | |
| 51 | # never honor LD_PRELOAD |
| 52 | neverallow * llkd:process noatsecure; |