[automerger] vold: resolve crypto device creation failure with dm-crypt skipped: 4b5c1b2db2
CRs-Fixed: 2457311
Change-Id: I5e5116480818586cc791fb23e19a0571c0d63d95
diff --git a/cryptfs.cpp b/cryptfs.cpp
index b244158..ed9a53e 100644
--- a/cryptfs.cpp
+++ b/cryptfs.cpp
@@ -1232,7 +1232,6 @@
return -1;
}
-#ifndef CONFIG_HW_DISK_ENCRYPTION
static std::string extra_params_as_string(const std::vector<std::string>& extra_params_vec) {
if (extra_params_vec.empty()) return "";
std::string extra_params = std::to_string(extra_params_vec.size());
@@ -1275,7 +1274,6 @@
}
return 0;
}
-#endif
static int create_crypto_blk_dev(struct crypt_mnt_ftr* crypt_ftr, const unsigned char* master_key,
const char* real_blk_name, char* crypto_blk_name, const char* name,
@@ -1292,9 +1290,8 @@
char encrypted_state[PROPERTY_VALUE_MAX] = {0};
char progress[PROPERTY_VALUE_MAX] = {0};
const char *extra_params;
-#else
- std::vector<std::string> extra_params_vec;
#endif
+ std::vector<std::string> extra_params_vec;
if ((fd = open("/dev/device-mapper", O_RDWR | O_CLOEXEC)) < 0) {
SLOGE("Cannot open device-mapper\n");
@@ -1342,20 +1339,25 @@
else
extra_params = "fde_enabled";
}
- extra_params_vec.emplace_back(extra_params);
- } else {
- if (! get_dm_crypt_version(fd, name, version)) {
- /* Support for allow_discards was added in version 1.11.0 */
- if ((version[0] >= 2) || ((version[0] == 1) && (version[1] >= 11))) {
- extra_params_vec.emplace_back("allow_discards");
- if (flags & CREATE_CRYPTO_BLK_DEV_FLAGS_ALLOW_ENCRYPT_OVERRIDE)
- extra_params_vec.emplace_back("allow_encrypt_override");
- SLOGI("Enabling support for allow_discards in dmcrypt.\n");
- }
- }
- }
- load_count = load_crypto_mapping_table(crypt_ftr, master_key, real_blk_name, name, fd,
+ load_count = load_crypto_mapping_table(crypt_ftr, master_key, real_blk_name, name, fd,
extra_params);
+ } else {
+ if (!get_dm_crypt_version(fd, name, version)) {
+ /* Support for allow_discards was added in version 1.11.0 */
+ if ((version[0] >= 2) || ((version[0] == 1) && (version[1] >= 11))) {
+ extra_params_vec.emplace_back("allow_discards");
+ }
+ }
+ if (flags & CREATE_CRYPTO_BLK_DEV_FLAGS_ALLOW_ENCRYPT_OVERRIDE) {
+ extra_params_vec.emplace_back("allow_encrypt_override");
+ }
+ if (add_sector_size_param(&extra_params_vec, crypt_ftr)) {
+ SLOGE("Error processing dm-crypt sector size param\n");
+ goto errout;
+ }
+ load_count = load_crypto_mapping_table(crypt_ftr, master_key, real_blk_name, name, fd,
+ extra_params_as_string(extra_params_vec).c_str());
+ }
#else
if (!get_dm_crypt_version(fd, name, version)) {
/* Support for allow_discards was added in version 1.11.0 */