Loading recovery.cpp +35 −37 Original line number Diff line number Diff line Loading @@ -793,46 +793,44 @@ static bool wipe_cache(bool should_confirm, Device* device) { return success; } // Secure-wipe a given partition. It uses BLKSECDISCARD, if supported. // Otherwise, it goes with BLKDISCARD (if device supports BLKDISCARDZEROES) or // BLKZEROOUT. // Secure-wipe a given partition. It uses BLKSECDISCARD, if supported. Otherwise, it goes with // BLKDISCARD (if device supports BLKDISCARDZEROES) or BLKZEROOUT. static bool secure_wipe_partition(const std::string& partition) { android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(partition.c_str(), O_WRONLY))); if (fd == -1) { PLOG(ERROR) << "failed to open \"" << partition << "\""; PLOG(ERROR) << "Failed to open \"" << partition << "\""; return false; } uint64_t range[2] = { 0, 0 }; if (ioctl(fd, BLKGETSIZE64, &range[1]) == -1 || range[1] == 0) { PLOG(ERROR) << "failed to get partition size"; PLOG(ERROR) << "Failed to get partition size"; return false; } printf("Secure-wiping \"%s\" from %" PRIu64 " to %" PRIu64 ".\n", partition.c_str(), range[0], range[1]); LOG(INFO) << "Secure-wiping \"" << partition << "\" from " << range[0] << " to " << range[1]; printf("Trying BLKSECDISCARD...\t"); LOG(INFO) << " Trying BLKSECDISCARD..."; if (ioctl(fd, BLKSECDISCARD, &range) == -1) { printf("failed: %s\n", strerror(errno)); PLOG(WARNING) << " Failed"; // Use BLKDISCARD if it zeroes out blocks, otherwise use BLKZEROOUT. unsigned int zeroes; if (ioctl(fd, BLKDISCARDZEROES, &zeroes) == 0 && zeroes != 0) { printf("Trying BLKDISCARD...\t"); LOG(INFO) << " Trying BLKDISCARD..."; if (ioctl(fd, BLKDISCARD, &range) == -1) { printf("failed: %s\n", strerror(errno)); PLOG(ERROR) << " Failed"; return false; } } else { printf("Trying BLKZEROOUT...\t"); LOG(INFO) << " Trying BLKZEROOUT..."; if (ioctl(fd, BLKZEROOUT, &range) == -1) { printf("failed: %s\n", strerror(errno)); PLOG(ERROR) << " Failed"; return false; } } } printf("done\n"); LOG(INFO) << " Done"; return true; } Loading Loading @@ -865,7 +863,7 @@ static bool check_wipe_package(size_t wipe_package_size) { return false; } std::string metadata; if (!read_metadata_from_package(&zip, &metadata)) { if (!read_metadata_from_package(zip, &metadata)) { CloseArchive(zip); return false; } Loading Loading
recovery.cpp +35 −37 Original line number Diff line number Diff line Loading @@ -793,46 +793,44 @@ static bool wipe_cache(bool should_confirm, Device* device) { return success; } // Secure-wipe a given partition. It uses BLKSECDISCARD, if supported. // Otherwise, it goes with BLKDISCARD (if device supports BLKDISCARDZEROES) or // BLKZEROOUT. // Secure-wipe a given partition. It uses BLKSECDISCARD, if supported. Otherwise, it goes with // BLKDISCARD (if device supports BLKDISCARDZEROES) or BLKZEROOUT. static bool secure_wipe_partition(const std::string& partition) { android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(partition.c_str(), O_WRONLY))); if (fd == -1) { PLOG(ERROR) << "failed to open \"" << partition << "\""; PLOG(ERROR) << "Failed to open \"" << partition << "\""; return false; } uint64_t range[2] = { 0, 0 }; if (ioctl(fd, BLKGETSIZE64, &range[1]) == -1 || range[1] == 0) { PLOG(ERROR) << "failed to get partition size"; PLOG(ERROR) << "Failed to get partition size"; return false; } printf("Secure-wiping \"%s\" from %" PRIu64 " to %" PRIu64 ".\n", partition.c_str(), range[0], range[1]); LOG(INFO) << "Secure-wiping \"" << partition << "\" from " << range[0] << " to " << range[1]; printf("Trying BLKSECDISCARD...\t"); LOG(INFO) << " Trying BLKSECDISCARD..."; if (ioctl(fd, BLKSECDISCARD, &range) == -1) { printf("failed: %s\n", strerror(errno)); PLOG(WARNING) << " Failed"; // Use BLKDISCARD if it zeroes out blocks, otherwise use BLKZEROOUT. unsigned int zeroes; if (ioctl(fd, BLKDISCARDZEROES, &zeroes) == 0 && zeroes != 0) { printf("Trying BLKDISCARD...\t"); LOG(INFO) << " Trying BLKDISCARD..."; if (ioctl(fd, BLKDISCARD, &range) == -1) { printf("failed: %s\n", strerror(errno)); PLOG(ERROR) << " Failed"; return false; } } else { printf("Trying BLKZEROOUT...\t"); LOG(INFO) << " Trying BLKZEROOUT..."; if (ioctl(fd, BLKZEROOUT, &range) == -1) { printf("failed: %s\n", strerror(errno)); PLOG(ERROR) << " Failed"; return false; } } } printf("done\n"); LOG(INFO) << " Done"; return true; } Loading Loading @@ -865,7 +863,7 @@ static bool check_wipe_package(size_t wipe_package_size) { return false; } std::string metadata; if (!read_metadata_from_package(&zip, &metadata)) { if (!read_metadata_from_package(zip, &metadata)) { CloseArchive(zip); return false; } Loading