# Support asec containers getting mounted
allow file_type rootfs:filesystem associate;

# Performance settings
type sysfs_devices_system_iosched, file_type, sysfs_type;

# Persistent property storage
type persist_property_file, file_type;

# Knobs for LiveDisplay
type livedisplay_sysfs, sysfs_type, file_type;

# Filesystems
type exfat, sdcard_type, fs_type, mlstrustedobject;
type ntfs, sdcard_type, fs_type, mlstrustedobject;
