From 5b6c6a2c4a37d927ebc283a66d1ec94e29d54874 Mon Sep 17 00:00:00 2001 From: Guang Zhu Date: Fri, 28 Apr 2017 23:56:45 +0000 Subject: [PATCH] Revert "Enable metadata encryption" Bug: 37792477 This reverts commit 3963b2364561a7d732995d5b8fec42097f548caa. Change-Id: I3b6bf5a9a4c3899aabe2c824d8498a06981daed8 --- MetadataCrypt.cpp | 25 +++++++++++++++++++++++-- cryptfs.cpp | 1 - vdc.rc | 2 -- 3 files changed, 23 insertions(+), 5 deletions(-) diff --git a/MetadataCrypt.cpp b/MetadataCrypt.cpp index 91382da..b707549 100644 --- a/MetadataCrypt.cpp +++ b/MetadataCrypt.cpp @@ -212,14 +212,34 @@ static bool prep_data_fs(void) // callers to this method must be async /* Do the prep of the /data filesystem */ + property_set("vold.post_fs_data_done", "0"); property_set("vold.decrypt", "trigger_post_fs_data"); - property_set("vold.decrypt", "trigger_restart_framework"); - return true; + LOG(DEBUG) << "Waiting for post_fs_data_done"; + + /* Wait a max of 50 seconds, hopefully it takes much less */ + for (int i = 0; ; i++) { + char p[PROPERTY_VALUE_MAX]; + + property_get("vold.post_fs_data_done", p, "0"); + if (*p == '1') { + LOG(INFO) << "Successful data prep"; + return true; + } + if (i + 1 == DATA_PREP_TIMEOUT) { + LOG(ERROR) << "post_fs_data timed out"; + return false; + } + usleep(50000); + } } static void async_kick_off() { LOG(DEBUG) << "Asynchronously restarting framework"; + sleep(2); // TODO: this mirrors cryptfs, but can it be made shorter? + property_set("vold.decrypt", "trigger_load_persist_props"); if (!prep_data_fs()) return; + /* startup service classes main and late_start */ + property_set("vold.decrypt", "trigger_restart_framework"); } bool e4crypt_mount_metadata_encrypted() { @@ -286,6 +306,7 @@ bool e4crypt_enable_crypto() { property_set("ro.crypto.type", "file"); mount_via_fs_mgr(data_rec->mount_point, crypto_blkdev.c_str()); + property_set("vold.decrypt", "trigger_reset_main"); std::thread(&async_kick_off).detach(); return true; } diff --git a/cryptfs.cpp b/cryptfs.cpp index d5bfe6d..6319362 100644 --- a/cryptfs.cpp +++ b/cryptfs.cpp @@ -2826,7 +2826,6 @@ int cryptfs_mount_default_encrypted(void) } else if (crypt_type != CRYPT_TYPE_DEFAULT) { SLOGD("Password is not default - " "starting min framework to prompt"); - property_set("vold.decrypt", "trigger_post_fs_data"); property_set("vold.decrypt", "trigger_restart_min_framework"); return 0; } else if (cryptfs_check_passwd(DEFAULT_PASSWORD) == 0) { diff --git a/vdc.rc b/vdc.rc index 9a95779..4d51ced 100644 --- a/vdc.rc +++ b/vdc.rc @@ -1,6 +1,5 @@ # One shot invocation to deal with encrypted volume. on defaultcrypto - start vold exec - root -- /system/bin/vdc --wait cryptfs mountdefaultencrypted # vold will set vold.decrypt to trigger_restart_framework (default # encryption) or trigger_restart_min_framework (other encryption) @@ -8,7 +7,6 @@ on defaultcrypto # One shot invocation to encrypt unencrypted volumes on encrypt start surfaceflinger - start vold exec - root -- /system/bin/vdc --wait cryptfs enablecrypto inplace default noui # vold will set vold.decrypt to trigger_restart_framework (default # encryption)