040ce199b2
The system property "vold.post_fs_data_done" is used by init and vold to communicate with each other in order to set up FDE on devices that use FDE. It needs to be gettable and settable by vold, and settable by init and vendor_init. This was the case in Android 11 and earlier; however, the change https://android-review.googlesource.com/c/platform/system/sepolicy/+/1277447 ("Rename exported and exported2 vold prop") broke this by giving this property the type "vold_config_prop", which made it no longer settable by vold. Since none of the existing property types appear to be appropriate for this particular property, define a new type "vold_post_fs_data_prop" and grant the needed domains permission to get/set it. This is one of a set of changes that is needed to get FDE working again so that devices that launched with FDE can be upgraded to Android 12. Bug: 186165644 Test: Tested FDE on Cuttlefish Change-Id: I2fd8af0091f8b921ec37381ad3b85a156d074566
67 lines
1.9 KiB
Text
67 lines
1.9 KiB
Text
typeattribute vold coredomain;
|
|
|
|
init_daemon_domain(vold)
|
|
|
|
# Switch to more restrictive domains when executing common tools
|
|
domain_auto_trans(vold, sgdisk_exec, sgdisk);
|
|
domain_auto_trans(vold, sdcardd_exec, sdcardd);
|
|
|
|
# For a handful of probing tools, we choose an even more restrictive
|
|
# domain when working with untrusted block devices
|
|
domain_trans(vold, blkid_exec, blkid);
|
|
domain_trans(vold, blkid_exec, blkid_untrusted);
|
|
domain_trans(vold, fsck_exec, fsck);
|
|
domain_trans(vold, fsck_exec, fsck_untrusted);
|
|
|
|
# Newly created storage dirs are always treated as mount stubs to prevent us
|
|
# from accidentally writing when the mount point isn't present.
|
|
type_transition vold storage_file:dir storage_stub_file;
|
|
type_transition vold mnt_media_rw_file:dir mnt_media_rw_stub_file;
|
|
|
|
# Property Service
|
|
get_prop(vold, vold_config_prop)
|
|
get_prop(vold, storage_config_prop);
|
|
get_prop(vold, incremental_prop);
|
|
|
|
set_prop(vold, vold_post_fs_data_prop)
|
|
set_prop(vold, vold_prop)
|
|
set_prop(vold, vold_status_prop)
|
|
set_prop(vold, powerctl_prop)
|
|
set_prop(vold, ctl_fuse_prop)
|
|
set_prop(vold, restorecon_prop)
|
|
set_prop(vold, ota_prop)
|
|
set_prop(vold, boottime_prop)
|
|
set_prop(vold, boottime_public_prop)
|
|
|
|
# Vold will use Keystore instead of using Keymint directly. But it still needs
|
|
# to manage its Keymint blobs. This is why it needs the `manage_blob` permission.
|
|
allow vold vold_key:keystore2_key {
|
|
convert_storage_key_to_ephemeral
|
|
delete
|
|
get_info
|
|
manage_blob
|
|
rebind
|
|
req_forced_op
|
|
update
|
|
use
|
|
};
|
|
|
|
# vold needs to call keystore methods
|
|
allow vold keystore:binder call;
|
|
|
|
# vold needs to find keystore2 services
|
|
allow vold keystore_service:service_manager find;
|
|
allow vold keystore_maintenance_service:service_manager find;
|
|
|
|
# vold needs to be able to call earlyBootEnded()
|
|
allow vold keystore:keystore2 early_boot_ended;
|
|
|
|
neverallow {
|
|
domain
|
|
-system_server
|
|
-vdc
|
|
-vold
|
|
-update_verifier
|
|
-apexd
|
|
-gsid
|
|
} vold_service:service_manager find;
|