From 2a89545739b4efef4bd6535206ad0f5a813df39f Mon Sep 17 00:00:00 2001 From: Todd Kennedy Date: Thu, 16 Jul 2015 16:39:46 -0700 Subject: [PATCH] clear calling identity to dexopt Bug: 22067670 Change-Id: I3596f26a079660f6898401ed679463193b00c799 --- .../android/server/pm/PackageManagerService.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 4b2c1ff60622b..556146a86d5b8 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -6159,12 +6159,16 @@ public class PackageManagerService extends IPackageManager.Stub { return false; } } - - synchronized (mInstallLock) { - final String[] instructionSets = new String[] { targetInstructionSet }; - int result = mPackageDexOptimizer.performDexOpt(p, instructionSets, - false /* forceDex */, false /* defer */, true /* inclDependencies */); - return result == PackageDexOptimizer.DEX_OPT_PERFORMED; + long callingId = Binder.clearCallingIdentity(); + try { + synchronized (mInstallLock) { + final String[] instructionSets = new String[] { targetInstructionSet }; + int result = mPackageDexOptimizer.performDexOpt(p, instructionSets, + false /* forceDex */, false /* defer */, true /* inclDependencies */); + return result == PackageDexOptimizer.DEX_OPT_PERFORMED; + } + } finally { + Binder.restoreCallingIdentity(callingId); } }