diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f041d50bd5544..d3f7795c2d969 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -6172,12 +6172,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); } }