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

init_daemon_domain(kickstart)

# Spawn /system/bin/efsks and /system/bin/ks
allow kickstart kickstart_exec:file { open execute_no_trans getattr };

# 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 for EFS
allow kickstart efs_block_device:blk_file 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 create_dir_perms;
allow kickstart efs_data_file:file create_file_perms;
allow kickstart efs_data_file:dir rw_dir_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)

# ro.hw.ril.baseband : to indicate which modem is used for single ROM ARCH
# sys.current.cnv : to indicate which NV file is used for dynamical customization
set_prop(kickstart, system_prop)
