Merge changes Ibf64db88,I033ee79c am: 689bba18b3
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1915510 Change-Id: I5558464cf53cdbab4241706eb62c5fcc3a91afaf
This commit is contained in:
@@ -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>();
|
||||
|
||||
Reference in New Issue
Block a user