From 13f793aec9c47a295a105d611e422a3a682aedfe Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Wed, 28 Apr 2021 09:48:50 +0200 Subject: [PATCH] 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 Change-Id: I7972f79d14893571289a2245f98e90e6c8c69f0a --- 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..7f7288b89c861 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.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;