Remove unnecessary locking around DefaultPermissionGrantPolicy.

DefaultPermissionGrantPolicy may call into package manager for package
information, so it cannot be called while holding permission's lock.

Bug: 158736025
Test: presubmit
Change-Id: I5cd9e6871c4e84849334076a54df6c165f2f1c67
This commit is contained in:
Hai Zhang
2020-07-27 18:01:18 -07:00
parent 3d012cb545
commit c546ba79e0

View File

@@ -1928,10 +1928,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
}
}
if (doGrant && packageName != null) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(packageName,
userId);
}
mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(packageName,
userId);
}
return true;
}
@@ -1941,10 +1939,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils
.enforceSystemOrPhoneCaller("grantPermissionsToEnabledCarrierApps", callingUid);
synchronized (mLock) {
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId));
}
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId));
}
@Override
@@ -1952,10 +1948,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
"grantDefaultPermissionsToEnabledImsServices", callingUid);
synchronized (mLock) {
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToEnabledImsServices(packageNames, userId));
}
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToEnabledImsServices(packageNames, userId));
}
@Override
@@ -1964,11 +1958,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
"grantDefaultPermissionsToEnabledTelephonyDataServices", callingUid);
synchronized (mLock) {
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToEnabledTelephonyDataServices(
packageNames, userId));
}
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToEnabledTelephonyDataServices(packageNames, userId));
}
@Override
@@ -1977,11 +1968,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
"revokeDefaultPermissionsFromDisabledTelephonyDataServices", callingUid);
synchronized (mLock) {
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.revokeDefaultPermissionsFromDisabledTelephonyDataServices(
packageNames, userId));
}
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.revokeDefaultPermissionsFromDisabledTelephonyDataServices(packageNames, userId));
}
@Override
@@ -1989,10 +1977,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils
.enforceSystemOrPhoneCaller("grantDefaultPermissionsToActiveLuiApp", callingUid);
synchronized (mLock) {
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToActiveLuiApp(packageName, userId));
}
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToActiveLuiApp(packageName, userId));
}
@Override
@@ -2000,10 +1986,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
final int callingUid = Binder.getCallingUid();
PackageManagerServiceUtils
.enforceSystemOrPhoneCaller("revokeDefaultPermissionsFromLuiApps", callingUid);
synchronized (mLock) {
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.revokeDefaultPermissionsFromLuiApps(packageNames, userId));
}
Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
.revokeDefaultPermissionsFromLuiApps(packageNames, userId));
}
@Override
@@ -4889,58 +4873,42 @@ public class PermissionManagerService extends IPermissionManager.Stub {
@Override
public void setDialerAppPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setDialerAppPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setDialerAppPackagesProvider(provider);
}
@Override
public void setLocationExtraPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setLocationExtraPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setLocationExtraPackagesProvider(provider);
}
@Override
public void setLocationPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setLocationPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setLocationPackagesProvider(provider);
}
@Override
public void setSimCallManagerPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setSimCallManagerPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setSimCallManagerPackagesProvider(provider);
}
@Override
public void setSmsAppPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setSmsAppPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setSmsAppPackagesProvider(provider);
}
@Override
public void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setSyncAdapterPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setSyncAdapterPackagesProvider(provider);
}
@Override
public void setUseOpenWifiAppPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setUseOpenWifiAppPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setUseOpenWifiAppPackagesProvider(provider);
}
@Override
public void setVoiceInteractionPackagesProvider(PackagesProvider provider) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy.setVoiceInteractionPackagesProvider(provider);
}
mDefaultPermissionGrantPolicy.setVoiceInteractionPackagesProvider(provider);
}
@Override
@@ -4972,26 +4940,20 @@ public class PermissionManagerService extends IPermissionManager.Stub {
@Override
public void grantDefaultPermissionsToDefaultSimCallManager(String packageName, int userId) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToDefaultSimCallManager(packageName, userId);
}
mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultSimCallManager(
packageName, userId);
}
@Override
public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToDefaultUseOpenWifiApp(packageName, userId);
}
mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultUseOpenWifiApp(
packageName, userId);
}
@Override
public void grantDefaultPermissionsToDefaultBrowser(String packageName, int userId) {
synchronized (mLock) {
mDefaultPermissionGrantPolicy
.grantDefaultPermissionsToDefaultBrowser(packageName, userId);
}
mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(packageName,
userId);
}
@Override