From d6b7b6b3aaceb080405ffe1063b7d244aaa5179f Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Wed, 28 Apr 2021 15:21:54 +0000 Subject: [PATCH] Revert "Revert "Fixup app-private dirs that are not writable."" Fixup non-writable app-private dirs that could have been left around by an earlier race condition in the setup of the FUSE filesystem. Bug: 181726193 Bug: 182088154 Test: erase userdata, check Youtube dirs are fixed up correctly Reason for revert: fixing issue in original CL Change-Id: Ifacf807f62dec3c9e22b5e5af0f2b00c4423ede4 --- core/java/android/app/ContextImpl.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 656942d315ccd..9ce37e48ce191 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -3273,6 +3273,13 @@ class ContextImpl extends Context { dir = null; } } + if (dir != null && !dir.canWrite()) { + // Older versions of the MediaProvider mainline module had a rare early boot race + // condition where app-private dirs could be created with the wrong permissions; + // fix this up here. This check should be very fast, because dir.exists() above + // will already have loaded the dentry in the cache. + sm.fixupAppDir(dir); + } result[i] = dir; } return result;