| From e9a0844ed2609aba7351c45bc5301437aeb1eb25 Mon Sep 17 00:00:00 2001 |
| From: Jackeagle <jackeagle102@gmail.com> |
| Date: Wed, 19 Dec 2018 17:02:18 +0100 |
| Subject: [PATCH 7/8] Revert "system: vold: Remove crypto block device |
| creation" |
| |
| This reverts commit 4d404ad5154ce73bafa3820b72f2be397b79b628. |
| --- |
| Android.bp | 3 -- |
| EncryptInplace.cpp | 77 ---------------------------------------------- |
| VoldUtil.h | 3 -- |
| cryptfs.cpp | 67 ---------------------------------------- |
| 4 files changed, 150 deletions(-) |
| |
| diff --git a/Android.bp b/Android.bp |
| index 416b493..ffb139e 100644 |
| --- a/Android.bp |
| +++ b/Android.bp |
| @@ -145,9 +145,6 @@ cc_library_static { |
| header_libs: ["libcryptfs_hw_headers"], |
| shared_libs: ["libcryptfs_hw"], |
| }, |
| - device_support_hwfde_perf: { |
| - cflags: ["-DCONFIG_HW_DISK_ENCRYPT_PERF"], |
| - }, |
| }, |
| } |
| |
| diff --git a/EncryptInplace.cpp b/EncryptInplace.cpp |
| index d46d23e..6462dbf 100644 |
| --- a/EncryptInplace.cpp |
| +++ b/EncryptInplace.cpp |
| @@ -32,9 +32,6 @@ |
| #include <android-base/logging.h> |
| #include <android-base/properties.h> |
| |
| -#ifdef CONFIG_HW_DISK_ENCRYPTION |
| -#include "cryptfs_hw.h" |
| -#endif |
| // HORRIBLE HACK, FIXME |
| #include "cryptfs.h" |
| |
| @@ -285,27 +282,6 @@ static int cryptfs_enable_inplace_ext4(char* crypto_blkdev, char* real_blkdev, o |
| } |
| |
| LOG(DEBUG) << "Opening" << crypto_blkdev; |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (is_ice_enabled()) |
| - data.cryptofd = data.realfd; |
| - else { |
| - // Wait until the block device appears. Re-use the mount retry values since it is reasonable. |
| - while ((data.cryptofd = open(crypto_blkdev, O_WRONLY|O_CLOEXEC)) < 0) { |
| - if (--retries) { |
| - PLOG(ERROR) << "Error opening crypto_blkdev " << crypto_blkdev |
| - << " for ext4 inplace encrypt. err=" << errno |
| - << "(" << strerror(errno) << "), retrying"; |
| - sleep(RETRY_MOUNT_DELAY_SECONDS); |
| - } else { |
| - PLOG(ERROR) << "Error opening crypto_blkdev " << crypto_blkdev |
| - << " for ext4 inplace encrypt. err=" << errno |
| - << "(" << strerror(errno) << "), retrying"; |
| - rc = ENABLE_INPLACE_ERR_DEV; |
| - goto errout; |
| - } |
| - } |
| - } |
| -#else |
| // Wait until the block device appears. Re-use the mount retry values since it is reasonable. |
| while ((data.cryptofd = open(crypto_blkdev, O_WRONLY|O_CLOEXEC)) < 0) { |
| if (--retries) { |
| @@ -319,7 +295,6 @@ static int cryptfs_enable_inplace_ext4(char* crypto_blkdev, char* real_blkdev, o |
| goto errout; |
| } |
| } |
| -#endif |
| |
| if (setjmp(setjmp_env)) { // NOLINT |
| LOG(ERROR) << "Reading ext4 extent caused an exception"; |
| @@ -365,12 +340,7 @@ static int cryptfs_enable_inplace_ext4(char* crypto_blkdev, char* real_blkdev, o |
| |
| errout: |
| close(data.realfd); |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (!is_ice_enabled()) |
| - close(data.cryptofd); |
| -#else |
| close(data.cryptofd); |
| -#endif |
| |
| return rc; |
| } |
| @@ -446,26 +416,12 @@ static int cryptfs_enable_inplace_f2fs(char* crypto_blkdev, char* real_blkdev, o |
| PLOG(ERROR) << "Error opening real_blkdev " << real_blkdev << " for f2fs inplace encrypt"; |
| goto errout; |
| } |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (is_ice_enabled()) |
| - data.cryptofd = data.realfd; |
| - else { |
| - if ((data.cryptofd = open64(crypto_blkdev, O_WRONLY|O_CLOEXEC)) < 0) { |
| - PLOG(ERROR) << "Error opening crypto_blkdev " << crypto_blkdev |
| - << " for f2fs inplace encrypt. err=" << errno |
| - << "(" << strerror(errno) << "), retrying"; |
| - rc = ENABLE_INPLACE_ERR_DEV; |
| - goto errout; |
| - } |
| - } |
| -#else |
| if ( (data.cryptofd = open64(crypto_blkdev, O_WRONLY|O_CLOEXEC)) < 0) { |
| PLOG(ERROR) << "Error opening crypto_blkdev " << crypto_blkdev |
| << " for f2fs inplace encrypt"; |
| rc = ENABLE_INPLACE_ERR_DEV; |
| goto errout; |
| } |
| -#endif |
| |
| f2fs_info = generate_f2fs_info(data.realfd); |
| if (!f2fs_info) |
| @@ -509,12 +465,7 @@ errout: |
| free(f2fs_info); |
| free(data.buffer); |
| close(data.realfd); |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (!is_ice_enabled()) |
| - close(data.cryptofd); |
| -#else |
| close(data.cryptofd); |
| -#endif |
| |
| return rc; |
| } |
| @@ -535,25 +486,11 @@ static int cryptfs_enable_inplace_full(char* crypto_blkdev, char* real_blkdev, o |
| return ENABLE_INPLACE_ERR_OTHER; |
| } |
| |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (is_ice_enabled()) |
| - cryptofd = realfd; |
| - else { |
| - if ((cryptofd = open(crypto_blkdev, O_WRONLY|O_CLOEXEC)) < 0) { |
| - PLOG(ERROR) << "Error opening crypto_blkdev " << crypto_blkdev |
| - << " for inplace encrypt. err=" << errno |
| - << "(" << strerror(errno) << "), retrying"; |
| - close(realfd); |
| - return ENABLE_INPLACE_ERR_DEV; |
| - } |
| - } |
| -#else |
| if ( (cryptofd = open(crypto_blkdev, O_WRONLY|O_CLOEXEC)) < 0) { |
| PLOG(ERROR) << "Error opening crypto_blkdev " << crypto_blkdev << " for inplace encrypt"; |
| close(realfd); |
| return ENABLE_INPLACE_ERR_DEV; |
| } |
| -#endif |
| |
| /* This is pretty much a simple loop of reading 4K, and writing 4K. |
| * The size passed in is the number of 512 byte sectors in the filesystem. |
| @@ -574,19 +511,10 @@ static int cryptfs_enable_inplace_full(char* crypto_blkdev, char* real_blkdev, o |
| goto errout; |
| } |
| |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (!is_ice_enabled()) { |
| - if (lseek64(cryptofd, i * CRYPT_SECTOR_SIZE, SEEK_SET) < 0) { |
| - PLOG(ERROR) << "Cannot seek to previously encrypted point on " << crypto_blkdev; |
| - goto errout; |
| - } |
| - } |
| -#else |
| if (lseek64(cryptofd, i * CRYPT_SECTOR_SIZE, SEEK_SET) < 0) { |
| PLOG(ERROR) << "Cannot seek to previously encrypted point on " << crypto_blkdev; |
| goto errout; |
| } |
| -#endif |
| |
| for (;i < size && i % CRYPT_SECTORS_PER_BUFSIZE != 0; ++i) { |
| if (unix_read(realfd, buf, CRYPT_SECTOR_SIZE) <= 0) { |
| @@ -649,12 +577,7 @@ static int cryptfs_enable_inplace_full(char* crypto_blkdev, char* real_blkdev, o |
| |
| errout: |
| close(realfd); |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (!is_ice_enabled()) |
| - close(cryptofd); |
| -#else |
| close(cryptofd); |
| -#endif |
| |
| return rc; |
| } |
| diff --git a/VoldUtil.h b/VoldUtil.h |
| index ac484d8..fd66672 100644 |
| --- a/VoldUtil.h |
| +++ b/VoldUtil.h |
| @@ -26,7 +26,4 @@ extern struct fstab *fstab_default; |
| |
| void get_blkdev_size(int fd, unsigned long* nr_sec); |
| |
| -#ifdef CONFIG_HW_DISK_ENCRYPT_PERF |
| -void get_blkdev_start_sector(int fd, unsigned long* st_sec); |
| -#endif |
| #endif |
| diff --git a/cryptfs.cpp b/cryptfs.cpp |
| index 6352de5..bea9b2f 100644 |
| --- a/cryptfs.cpp |
| +++ b/cryptfs.cpp |
| @@ -1816,9 +1816,6 @@ static void cryptfs_trigger_restart_min_framework() |
| static int cryptfs_restart_internal(int restart_main) |
| { |
| char crypto_blkdev[MAXPATHLEN]; |
| -#ifdef CONFIG_HW_DISK_ENCRYPTION |
| - char blkdev[MAXPATHLEN]; |
| -#endif |
| int rc = -1; |
| static int restart_successful = 0; |
| |
| @@ -1866,24 +1863,6 @@ static int cryptfs_restart_internal(int restart_main) |
| * the tmpfs filesystem, and mount the real one. |
| */ |
| |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) |
| -#if defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (is_ice_enabled()) { |
| - fs_mgr_get_crypt_info(fstab_default, 0, blkdev, sizeof(blkdev)); |
| - if (set_ice_param(START_ENCDEC)) { |
| - SLOGE("Failed to set ICE data"); |
| - return -1; |
| - } |
| - } |
| -#else |
| - property_get("ro.crypto.fs_crypto_blkdev", blkdev, ""); |
| - if (strlen(blkdev) == 0) { |
| - SLOGE("fs_crypto_blkdev not set\n"); |
| - return -1; |
| - } |
| - if (!(rc = wait_and_unmount(DATA_MNT_POINT, true))) { |
| -#endif |
| -#else |
| property_get("ro.crypto.fs_crypto_blkdev", crypto_blkdev, ""); |
| if (strlen(crypto_blkdev) == 0) { |
| SLOGE("fs_crypto_blkdev not set\n"); |
| @@ -1891,7 +1870,6 @@ static int cryptfs_restart_internal(int restart_main) |
| } |
| |
| if (! (rc = wait_and_unmount(DATA_MNT_POINT, true)) ) { |
| -#endif |
| /* If ro.crypto.readonly is set to 1, mount the decrypted |
| * filesystem readonly. This is used when /data is mounted by |
| * recovery mode. |
| @@ -1915,26 +1893,15 @@ static int cryptfs_restart_internal(int restart_main) |
| SLOGE("Failed to setexeccon"); |
| return -1; |
| } |
| -#ifdef CONFIG_HW_DISK_ENCRYPTION |
| - while ((mount_rc = fs_mgr_do_mount(fstab_default, DATA_MNT_POINT, |
| - blkdev, 0)) |
| - != 0) { |
| -#else |
| while ((mount_rc = fs_mgr_do_mount(fstab_default, DATA_MNT_POINT, |
| crypto_blkdev, 0)) |
| != 0) { |
| -#endif |
| if (mount_rc == FS_MGR_DOMNT_BUSY) { |
| /* TODO: invoke something similar to |
| Process::killProcessWithOpenFiles(DATA_MNT_POINT, |
| retries > RETRY_MOUNT_ATTEMPT/2 ? 1 : 2 ) */ |
| -#ifdef CONFIG_HW_DISK_ENCRYPTION |
| - SLOGI("Failed to mount %s because it is busy - waiting", |
| - blkdev); |
| -#else |
| SLOGI("Failed to mount %s because it is busy - waiting", |
| crypto_blkdev); |
| -#endif |
| if (--retries) { |
| sleep(RETRY_MOUNT_DELAY_SECONDS); |
| } else { |
| @@ -1980,9 +1947,7 @@ static int cryptfs_restart_internal(int restart_main) |
| |
| /* Give it a few moments to get started */ |
| sleep(1); |
| -#ifndef CONFIG_HW_DISK_ENCRYPT_PERF |
| } |
| -#endif |
| |
| if (rc == 0) { |
| restart_successful = 1; |
| @@ -2084,14 +2049,12 @@ static int test_mount_hw_encrypted_fs(struct crypt_mnt_ftr* crypt_ftr, |
| } |
| else { |
| if (is_ice_enabled()) { |
| -#ifndef CONFIG_HW_DISK_ENCRYPT_PERF |
| if (create_crypto_blk_dev(crypt_ftr, (unsigned char*)&key_index, |
| real_blkdev, crypto_blkdev, label, 0)) { |
| SLOGE("Error creating decrypted block device"); |
| rc = -1; |
| goto errout; |
| } |
| -#endif |
| } else { |
| if (create_crypto_blk_dev(crypt_ftr, decrypted_master_key, |
| real_blkdev, crypto_blkdev, label, 0)) { |
| @@ -2111,9 +2074,6 @@ static int test_mount_hw_encrypted_fs(struct crypt_mnt_ftr* crypt_ftr, |
| |
| /* Save the name of the crypto block device |
| * so we can mount it when restarting the framework. */ |
| -#ifdef CONFIG_HW_DISK_ENCRYPT_PERF |
| - if (!is_ice_enabled()) |
| -#endif |
| property_set("ro.crypto.fs_crypto_blkdev", crypto_blkdev); |
| master_key_saved = 1; |
| } |
| @@ -2871,12 +2831,8 @@ int cryptfs_enable_internal(int crypt_type, const char* passwd, int no_ui) { |
| decrypt_master_key(passwd, decrypted_master_key, &crypt_ftr, 0, 0); |
| #ifdef CONFIG_HW_DISK_ENCRYPTION |
| if (is_hw_disk_encryption((char*)crypt_ftr.crypto_type_name) && is_ice_enabled()) |
| -#ifdef CONFIG_HW_DISK_ENCRYPT_PERF |
| - strlcpy(crypto_blkdev, real_blkdev, sizeof(crypto_blkdev)); |
| -#else |
| create_crypto_blk_dev(&crypt_ftr, (unsigned char*)&key_index, real_blkdev, crypto_blkdev, |
| CRYPTO_BLOCK_DEVICE, 0); |
| -#endif |
| else |
| create_crypto_blk_dev(&crypt_ftr, decrypted_master_key, real_blkdev, crypto_blkdev, |
| CRYPTO_BLOCK_DEVICE, 0); |
| @@ -2889,12 +2845,6 @@ int cryptfs_enable_internal(int crypt_type, const char* passwd, int no_ui) { |
| rc = 0; |
| if (previously_encrypted_upto) { |
| __le8 hash_first_block[SHA256_DIGEST_LENGTH]; |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (set_ice_param(START_ENCDEC)) { |
| - SLOGE("Failed to set ICE data"); |
| - goto error_shutting_down; |
| - } |
| -#endif |
| rc = cryptfs_SHA256_fileblock(crypto_blkdev, hash_first_block); |
| |
| if (!rc && memcmp(hash_first_block, crypt_ftr.hash_first_block, |
| @@ -2904,23 +2854,11 @@ int cryptfs_enable_internal(int crypt_type, const char* passwd, int no_ui) { |
| } |
| } |
| |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (set_ice_param(START_ENC)) { |
| - SLOGE("Failed to set ICE data"); |
| - goto error_shutting_down; |
| - } |
| -#endif |
| if (!rc) { |
| rc = cryptfs_enable_all_volumes(&crypt_ftr, crypto_blkdev, real_blkdev, |
| previously_encrypted_upto); |
| } |
| |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (set_ice_param(START_ENCDEC)) { |
| - SLOGE("Failed to set ICE data"); |
| - goto error_shutting_down; |
| - } |
| -#endif |
| /* Calculate checksum if we are not finished */ |
| if (!rc && crypt_ftr.encrypted_upto != crypt_ftr.fs_size) { |
| rc = cryptfs_SHA256_fileblock(crypto_blkdev, |
| @@ -2932,12 +2870,7 @@ int cryptfs_enable_internal(int crypt_type, const char* passwd, int no_ui) { |
| } |
| |
| /* Undo the dm-crypt mapping whether we succeed or not */ |
| -#if defined(CONFIG_HW_DISK_ENCRYPTION) && defined(CONFIG_HW_DISK_ENCRYPT_PERF) |
| - if (!is_ice_enabled()) |
| - delete_crypto_blk_dev(CRYPTO_BLOCK_DEVICE); |
| -#else |
| delete_crypto_blk_dev(CRYPTO_BLOCK_DEVICE); |
| -#endif |
| |
| if (! rc) { |
| /* Success */ |
| -- |
| 2.21.0 |
| |