type location, domain;
type location_exec, exec_type, vendor_file_type, file_type;
init_daemon_domain(location)

r_dir_file(location, sysfs_msm_subsys)
r_dir_file(location, sysfs_soc)
r_dir_file(location, sysfs_ssr)

allow location hal_gnss_qti:unix_dgram_socket sendto;

allow location location_data_file:dir create_dir_perms;
allow location location_data_file:file create_file_perms;
allow location location_exec:file execute_no_trans;
allow location location_socket:dir w_dir_perms;
allow location location_socket:sock_file create_file_perms;

allow location self:capability setgid;
allow location self:qipcrtr_socket create_socket_perms_no_ioctl;
