From b501ef1e21e4314aa1177b6d59294b2b18d7d2a0 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 15 Nov 2016 14:39:17 -0700 Subject: [PATCH] Aggressively clear cached data when forgetting. Otherwise the system server risks keeping open FDs to an adopted storage device that could later be ejected. Test: builds Bug: 31596654 Change-Id: I6285042b4f0714dbf601c7dfa53efb704ea29d0b --- .../java/com/android/server/pm/PackageManagerService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index a9d10dd542de9..1ed0c0180b95c 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -1877,6 +1877,11 @@ public class PackageManagerService extends IPackageManager.Stub { Slog.d(TAG, "Destroying " + ps.name + " because volume was forgotten"); deletePackage(ps.name, new LegacyPackageDeleteObserver(null).getBinder(), UserHandle.USER_SYSTEM, PackageManager.DELETE_ALL_USERS); + + // Try very hard to release any references to this package + // so we don't risk the system server being killed due to + // open FDs + AttributeCache.instance().removePackage(ps.name); } mSettings.onVolumeForgotten(fsUuid);