From b2ee9e0771a350d0c6331493c313fe37435facb8 Mon Sep 17 00:00:00 2001 From: Tianjie Date: Thu, 21 Oct 2021 15:16:49 -0700 Subject: [PATCH] Delete the checkin directory with the wrong context http://aosp/1845900 creates the directory with the wrong permission and context. And when we attempt to fix it in http://aosp/1860276, the device would fail to boot if the device is already on the bad build. As a temporarily fix, already delete that checkin directory in vold. And we can revert the deletion when the droidfood daily polulation gets out of the bad state. Bug: 203742483 Test: Update from TP1A.211016.001 and make sure the boot doesn't fail Change-Id: Iec74528c1fe0e5876acc601e5cd008f99852d269 --- vold_prepare_subdirs.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/vold_prepare_subdirs.cpp b/vold_prepare_subdirs.cpp index 862191c..0d58e4d 100644 --- a/vold_prepare_subdirs.cpp +++ b/vold_prepare_subdirs.cpp @@ -215,7 +215,15 @@ static bool prepare_subdirs(const std::string& volume_uuid, int user_id, int fla // the user id to set the correct selinux mls_level. if (!prepare_dir_for_user(sehandle, 0770, AID_SYSTEM, AID_CACHE, misc_ce_path + "/checkin", user_id)) { - return false; + // TODO(b/203742483) the checkin directory was created with the wrong permission & + // context. Delete the directory to get these devices out of the bad state. Revert + // the change once the droidfood population is on newer build. + LOG(INFO) << "Failed to prepare the checkin directory, deleting for recreation"; + android::vold::DeleteDirContentsAndDir(misc_ce_path + "/checkin"); + if (!prepare_dir_for_user(sehandle, 0770, AID_SYSTEM, AID_CACHE, + misc_ce_path + "/checkin", user_id)) { + return false; + } } auto system_ce_path = android::vold::BuildDataSystemCePath(user_id);