summaryrefslogtreecommitdiffstats
path: root/cryptfs_hw.c
diff options
context:
space:
mode:
Diffstat (limited to 'cryptfs_hw.c')
-rw-r--r--cryptfs_hw.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/cryptfs_hw.c b/cryptfs_hw.c
index 65618df..ebf9381 100644
--- a/cryptfs_hw.c
+++ b/cryptfs_hw.c
@@ -68,6 +68,8 @@
#define CRYPTFS_HW_ALGO_MODE_AES_XTS 0x3
+#define METADATA_PARTITION_NAME "/dev/block/bootdevice/by-name/metadata"
+
enum cryptfs_hw_key_management_usage_type {
CRYPTFS_HW_KM_USAGE_DISK_ENCRYPTION = 0x01,
CRYPTFS_HW_KM_USAGE_FILE_ENCRYPTION = 0x02,
@@ -363,6 +365,18 @@ int is_ice_enabled(void)
int storage_type = 0;
int fd;
+ /*
+ * Since HW FDE is a compile time flag (due to QSSI requirements),
+ * this API conflicts with Metadata encryption even when ICE is
+ * enabled, as it encrypts the whole disk instead. Adding this
+ * workaround to return 0 if metadata partition is present.
+ */
+
+ if (access(METADATA_PARTITION_NAME, F_OK) == 0) {
+ SLOGI("Metadata partition, returning false");
+ return 0;
+ }
+
if (property_get("ro.boot.bootdevice", prop_storage, "")) {
if (strstr(prop_storage, "ufs")) {
/* All UFS based devices has ICE in it. So we dont need