[pm] revert mLock changes for compat seinfo

This partially reverts ag/16176950. Because we need to modify SeInfo, it
is not a read-only usage of PackageState.

BUG: 206662650
Test: atest com.android.cts.appcompat.CompatChangesSelinuxTest#testTargetSdkRAppIsInLatestDomainWithLatestOptin
Change-Id: I7260f7ef0c09669fe25f0313cc1517c56f4eaed8
This commit is contained in:
Songchun Fan
2021-11-19 00:07:41 +00:00
parent 622adb8ffe
commit eaac180189

View File

@@ -1500,16 +1500,19 @@ public class PackageManagerService extends IPackageManager.Stub
final CompatChange.ChangeListener selinuxChangeListener = packageName -> {
synchronized (m.mInstallLock) {
final AndroidPackage pkg;
final PackageSetting ps;
final SharedUserSetting sharedUser;
final String oldSeInfo;
final PackageStateInternal packageState = m.getPackageStateInternal(packageName);
if (packageState == null) {
Slog.e(TAG, "Failed to find package setting " + packageName);
return;
synchronized (m.mLock) {
ps = m.mSettings.getPackageLPr(packageName);
if (ps == null) {
Slog.e(TAG, "Failed to find package setting " + packageName);
return;
}
pkg = ps.getPkg();
sharedUser = ps.getSharedUser();
oldSeInfo = AndroidPackageUtils.getSeInfo(pkg, ps);
}
pkg = packageState.getPkg();
sharedUser = packageState.getSharedUser();
oldSeInfo = AndroidPackageUtils.getSeInfo(pkg, packageState);
if (pkg == null) {
Slog.e(TAG, "Failed to find package " + packageName);
@@ -1521,7 +1524,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (!newSeInfo.equals(oldSeInfo)) {
Slog.i(TAG, "Updating seInfo for package " + packageName + " from: "
+ oldSeInfo + " to: " + newSeInfo);
packageState.getTransientState().setOverrideSeInfo(newSeInfo);
ps.getPkgState().setOverrideSeInfo(newSeInfo);
m.mAppDataHelper.prepareAppDataAfterInstallLIF(pkg);
}
}