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

Commit 689bba18 authored by Evgenii Stepanov's avatar Evgenii Stepanov Committed by Gerrit Code Review
Browse files

Merge changes Ibf64db88,I033ee79c

* changes:
  Pass MTE RuntimeFlags to AppZygote.
  Revert "Pass MTE RuntimeFlags to AppZygote."
parents e97c024d 2e50afbd
Loading
Loading
Loading
Loading
+21 −1
Original line number Diff line number Diff line
@@ -373,6 +373,16 @@ public final class ProcessList {
    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
    private static final long NATIVE_HEAP_POINTER_TAGGING = 135754954; // This is a bug id.

    /**
     * Native heap allocations in AppZygote process and its descendants will now have a
     * non-zero tag in the most significant byte.
     * @see <a href="https://source.android.com/devices/tech/debug/tagged-pointers">Tagged
     * Pointers</a>
     */
    @ChangeId
    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.S)
    private static final long NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE = 207557677;

    /**
     * Enable asynchronous (ASYNC) memory tag checking in this process. This
     * flag will only have an effect on hardware supporting the ARM Memory
@@ -1738,6 +1748,16 @@ public final class ProcessList {
        return level;
    }

    private int decideTaggingLevelForAppZygote(ProcessRecord app) {
        int level = decideTaggingLevel(app);
        // TBI ("fake" pointer tagging) in AppZygote is controlled by a separate compat feature.
        if (!mPlatformCompat.isChangeEnabled(NATIVE_HEAP_POINTER_TAGGING_APP_ZYGOTE, app.info)
                && level == Zygote.MEMORY_TAG_LEVEL_TBI) {
            level = Zygote.MEMORY_TAG_LEVEL_NONE;
        }
        return level;
    }

    private int decideGwpAsanLevel(ProcessRecord app) {
        // Look at the process attribute first.
       if (app.processInfo != null
@@ -2238,7 +2258,7 @@ public final class ProcessList {
                // not the calling one.
                appInfo.packageName = app.getHostingRecord().getDefiningPackageName();
                appInfo.uid = uid;
                int runtimeFlags = decideTaggingLevel(app);
                int runtimeFlags = decideTaggingLevelForAppZygote(app);
                appZygote = new AppZygote(appInfo, uid, firstUid, lastUid, runtimeFlags);
                mAppZygotes.put(app.info.processName, uid, appZygote);
                zygoteProcessList = new ArrayList<ProcessRecord>();