# kickstart processes and scripts (system process)
type kickstart, domain, domain_deprecated;
type kickstart_exec, file_type, exec_type;

init_daemon_domain(kickstart)

# Run kickstart_checker.sh
allow kickstart shell_exec:file rx_file_perms;
allow kickstart kickstart_exec:file rx_file_perms;

# kickstart_checker.sh changes block devices
# /dev/block/platform/msm_sdcc.1/by-name/m9kefs*
allow kickstart self:capability { chown fowner };

# Let qcks access /dev/mdm node (modem driver)
allow kickstart radio_device:chr_file r_file_perms;

# Access USB host ks bridge drivers
allow kickstart kickstart_device:chr_file rw_file_perms;

# Read and write to /dev/block/mmcblk0p[567]
allow kickstart efs_block_device:blk_file { setattr rw_file_perms };
allow kickstart block_device:dir { getattr write search };

# Write contents of block device to kickstart data dir
allow kickstart kickstart_data_file:file create_file_perms;
allow kickstart kickstart_data_file:dir rw_dir_perms;

# Read radio firmware file(s)
allow kickstart radio_efs_file:dir search;
allow kickstart radio_efs_file:file r_file_perms;

# Run dd from toolbox on firmware files
allow kickstart shell_exec:file rx_file_perms;
allow kickstart system_file:file execute_no_trans;
allow kickstart toolbox_exec:file rx_file_perms;

# Wake lock access
wakelock_use(kickstart)

# Set property key gsm.radio.kickstart
set_prop(kickstart, radio_prop)

# Access /sys/module/rmnet_usb/parameters/rmnet_data_init
allow kickstart sysfs_rmnet:file w_file_perms;
