From b3cf95334551e55e068bf6f9d7640681cdc05e07 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 17 Jul 2015 15:12:39 -0700 Subject: [PATCH] Clear identity when killing media provider. Otherwise various shell "sm" commands fail because they don't hold the right permissions. Bug: 22564405 Change-Id: I88081e8a9b27ee43904d3ea6f745aba3af4e2150 --- .../java/com/android/server/MountService.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java index 0e158a2e59dc1..92b98a71f0cb5 100644 --- a/services/core/java/com/android/server/MountService.java +++ b/services/core/java/com/android/server/MountService.java @@ -740,15 +740,20 @@ class MountService extends IMountService.Stub */ @Deprecated private void killMediaProvider() { - final ProviderInfo provider = mPms.resolveContentProvider(MediaStore.AUTHORITY, 0, - UserHandle.USER_OWNER); - if (provider != null) { - final IActivityManager am = ActivityManagerNative.getDefault(); - try { - am.killApplicationWithAppId(provider.applicationInfo.packageName, - UserHandle.getAppId(provider.applicationInfo.uid), "vold reset"); - } catch (RemoteException e) { + final long token = Binder.clearCallingIdentity(); + try { + final ProviderInfo provider = mPms.resolveContentProvider(MediaStore.AUTHORITY, 0, + UserHandle.USER_OWNER); + if (provider != null) { + final IActivityManager am = ActivityManagerNative.getDefault(); + try { + am.killApplicationWithAppId(provider.applicationInfo.packageName, + UserHandle.getAppId(provider.applicationInfo.uid), "vold reset"); + } catch (RemoteException e) { + } } + } finally { + Binder.restoreCallingIdentity(token); } }