lmkd.te 1022 Bytes
Newer Older
1
# lmkd low memory killer daemon
2
type lmkd, domain, mlstrustedsubject;
3 4 5
type lmkd_exec, exec_type, file_type;

init_daemon_domain(lmkd)
Nick Kralevich's avatar
Nick Kralevich committed
6

Nick Kralevich's avatar
Nick Kralevich committed
7
allow lmkd self:capability { dac_override sys_resource kill };
Nick Kralevich's avatar
Nick Kralevich committed
8

9 10 11 12 13 14
# lmkd locks itself in memory, to prevent it from being
# swapped out and unable to kill other memory hogs.
# system/core commit b28ff9131363f7b4a698990da5748b2a88c3ed35
# b/16236289
allow lmkd self:capability ipc_lock;

Nick Kralevich's avatar
Nick Kralevich committed
15 16 17 18 19 20 21 22 23
## Open and write to /proc/PID/oom_score_adj
## TODO: maybe scope this down?
r_dir_file(lmkd, appdomain)
allow lmkd appdomain:file write;
r_dir_file(lmkd, system_server)
allow lmkd system_server:file write;

## Writes to /sys/module/lowmemorykiller/parameters/minfree
allow lmkd sysfs_lowmemorykiller:file w_file_perms;
Nick Kralevich's avatar
Nick Kralevich committed
24 25 26

# Send kill signals
allow lmkd appdomain:process sigkill;
27 28 29 30 31 32

# Clean up old cgroups
allow lmkd cgroup:dir { remove_name rmdir };

# Set self to SCHED_FIFO
allow lmkd self:capability sys_nice;
33 34 35 36 37

### neverallow rules

# never honor LD_PRELOAD
neverallow domain lmkd:process noatsecure;