allow cameraserver system_server:unix_stream_socket { read write };

# sensor manager based camera/video stabilization
allow cameraserver sensorservice_service:service_manager find;
allow cameraserver power_service:service_manager find;

# gpu access
allow cameraserver device:dir r_dir_perms;
allow cameraserver gpu_device:chr_file rw_file_perms;
allow cameraserver host1x_device:chr_file rw_file_perms;

# /sys and /proc access
allow cameraserver { proc proc_meminfo }:{ file lnk_file } r_file_perms;
r_dir_file(cameraserver, sysfs)

allow cameraserver system_file:dir r_dir_perms;
allow cameraserver tmpfs:dir search;
