Merge "init: do not load persistent properties from temporary /data"
am: b1d93a8136
Change-Id: I3dd6423db9bf9e799e438f2e5f50dfc77a0d78f8
diff --git a/init/property_service.cpp b/init/property_service.cpp
index bbfb047..7c76118 100644
--- a/init/property_service.cpp
+++ b/init/property_service.cpp
@@ -697,6 +697,17 @@
* has mounted /data.
*/
void load_persist_props(void) {
+ // Devices with FDE have load_persist_props called twice; the first time when the temporary
+ // /data partition is mounted and then again once /data is truly mounted. We do not want to
+ // read persistent properties from the temporary /data partition or mark persistent properties
+ // as having been loaded during the first call, so we return in that case.
+ std::string crypto_state = android::base::GetProperty("ro.crypto.state", "");
+ std::string crypto_type = android::base::GetProperty("ro.crypto.type", "");
+ if (crypto_state == "encrypted" && crypto_type == "block") {
+ static size_t num_calls = 0;
+ if (++num_calls == 1) return;
+ }
+
load_override_properties();
/* Read persistent properties after all default values have been loaded. */
load_persistent_properties();