From 7e7f881508cbda09f7092919052f28b84a63a30d Mon Sep 17 00:00:00 2001 From: Yifan Hong Date: Thu, 19 Nov 2020 12:12:11 -0800 Subject: [PATCH] init: don't abort if directory already exists create_directories return false with ec == 0 if directory already exists. Do not abort in this case. Bug: 173425293 Test: boots with pre-existing /first_stage_ramdisk/system/bin Change-Id: I351837f0a5a56361ebc385b9a9da9658882a131d --- init/first_stage_init.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/init/first_stage_init.cpp b/init/first_stage_init.cpp index 843ac5c08..6e9d6378d 100644 --- a/init/first_stage_init.cpp +++ b/init/first_stage_init.cpp @@ -117,7 +117,7 @@ void PrepareSwitchRoot() { auto dst_dir = android::base::Dirname(dst); std::error_code ec; - if (!fs::create_directories(dst_dir, ec)) { + if (!fs::create_directories(dst_dir, ec) && !!ec) { LOG(FATAL) << "Cannot create " << dst_dir << ": " << ec.message(); } if (rename(src, dst) != 0) { @@ -314,7 +314,7 @@ int FirstStageMain(int argc, char** argv) { std::string dest = GetRamdiskPropForSecondStage(); std::string dir = android::base::Dirname(dest); std::error_code ec; - if (!fs::create_directories(dir, ec)) { + if (!fs::create_directories(dir, ec) && !!ec) { LOG(FATAL) << "Can't mkdir " << dir << ": " << ec.message(); } if (!fs::copy_file(kBootImageRamdiskProp, dest, ec)) {