Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit eaac1801 authored by Songchun Fan's avatar Songchun Fan
Browse files

[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
parent 622adb8f
Loading
Loading
Loading
Loading
+11 −8
Original line number Diff line number Diff line
@@ -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) {
                synchronized (m.mLock) {
                    ps = m.mSettings.getPackageLPr(packageName);
                    if (ps == null) {
                        Slog.e(TAG, "Failed to find package setting " + packageName);
                        return;
                    }
                pkg = packageState.getPkg();
                sharedUser = packageState.getSharedUser();
                oldSeInfo = AndroidPackageUtils.getSeInfo(pkg, packageState);
                    pkg = ps.getPkg();
                    sharedUser = ps.getSharedUser();
                    oldSeInfo = AndroidPackageUtils.getSeInfo(pkg, ps);
                }

                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);
                }
            }