default fstab: only read the fstab if it hasn't been read yet
Change-Id: I0d8d5cdda4da5486f51a80772f9d581bf549138c
diff --git a/crypto/fscrypt/FsCrypt.cpp b/crypto/fscrypt/FsCrypt.cpp
index aa31fe1..6284fa8 100755
--- a/crypto/fscrypt/FsCrypt.cpp
+++ b/crypto/fscrypt/FsCrypt.cpp
@@ -233,9 +233,11 @@
// Retrieve the options to use for encryption policies on the /data filesystem.
static bool get_data_file_encryption_options(EncryptionOptions* options) {
- if (!ReadDefaultFstab(&fstab_default)) {
- PLOG(ERROR) << "Failed to open default fstab";
- return false;
+ if (fstab_default.empty()) {
+ if (!ReadDefaultFstab(&fstab_default)) {
+ PLOG(ERROR) << "Failed to open default fstab";
+ return false;
+ }
}
auto entry = GetEntryForMountPoint(&fstab_default, DATA_MNT_POINT);
if (entry == nullptr) {
@@ -299,9 +301,11 @@
}
bool is_metadata_wrapped_key_supported() {
- if (!ReadDefaultFstab(&fstab_default)) {
- PLOG(ERROR) << "Failed to open default fstab";
- return false;
+ if (fstab_default.empty()) {
+ if (!ReadDefaultFstab(&fstab_default)) {
+ PLOG(ERROR) << "Failed to open default fstab";
+ return false;
+ }
}
return GetEntryForMountPoint(&fstab_default, METADATA_MNT_POINT)->fs_mgr_flags.wrapped_key;
}
@@ -491,9 +495,11 @@
}
bool fscrypt_init_user0() {
- if (!ReadDefaultFstab(&fstab_default)) {
- PLOG(ERROR) << "Failed to open default fstab";
- return -1;
+ if (fstab_default.empty()) {
+ if (!ReadDefaultFstab(&fstab_default)) {
+ PLOG(ERROR) << "Failed to open default fstab";
+ return -1;
+ }
}
LOG(INFO) << "fscrypt_init_user0";
if (fscrypt_is_native()) {
diff --git a/crypto/fscrypt/MetadataCrypt.cpp b/crypto/fscrypt/MetadataCrypt.cpp
index b53ecd4..853e81e 100755
--- a/crypto/fscrypt/MetadataCrypt.cpp
+++ b/crypto/fscrypt/MetadataCrypt.cpp
@@ -97,9 +97,11 @@
return false;
}
- if (!ReadDefaultFstab(&fstab_default)) {
- PLOG(ERROR) << "Failed to open default fstab";
- return -1;
+ if (fstab_default.empty()) {
+ if (!ReadDefaultFstab(&fstab_default)) {
+ PLOG(ERROR) << "Failed to open default fstab";
+ return -1;
+ }
}
auto mount_rc = fs_mgr_do_mount(&fstab_default, const_cast<char*>(mount_point),
const_cast<char*>(blk_device), nullptr,
@@ -284,9 +286,11 @@
LOG(ERROR) << "fscrypt_enable_crypto got unexpected starting state: " << encrypted_state;
return false;
}
- if (!ReadDefaultFstab(&fstab_default)) {
- PLOG(ERROR) << "Failed to open default fstab";
- return -1;
+ if (fstab_default.empty()) {
+ if (!ReadDefaultFstab(&fstab_default)) {
+ PLOG(ERROR) << "Failed to open default fstab";
+ return -1;
+ }
}
auto data_rec = GetEntryForMountPoint(&fstab_default, mount_point);
if (!data_rec) {
@@ -323,7 +327,6 @@
LOG(ERROR) << "Unknown options_format_version: " << options_format_version;
return false;
}
-
auto gen = needs_encrypt ? makeGen(options) : neverGen();
KeyBuffer key;
if (!read_key(data_rec->metadata_key_dir, gen, &key)) return false;