Merge "Remove the workaround for old vendor blobs."

This commit is contained in:
Elliott Hughes
2023-04-24 19:09:34 +00:00
committed by Gerrit Code Review

View File

@@ -23,43 +23,13 @@
namespace {
// Shadow call stack (SCS) is a security mitigation that uses a separate stack
// (the SCS) for return addresses. In versions of Android newer than P, the
// compiler cooperates with the system to ensure that the SCS address is always
// stored in register x18, as long as the app was compiled with a new enough
// compiler and does not use features that rely on SP-HALs (this restriction is
// because the SP-HALs might not preserve x18 due to potentially having been
// compiled with an old compiler as a consequence of Treble; it generally means
// that the app must be a system app without a UI). This struct is used to
// temporarily store the address on the stack while preloading the SP-HALs, so
// that such apps can use the same zygote as everything else.
struct ScopedSCSExit {
#ifdef __aarch64__
void* scs;
ScopedSCSExit() {
__asm__ __volatile__("str x18, [%0]" ::"r"(&scs));
}
~ScopedSCSExit() {
__asm__ __volatile__("ldr x18, [%0]; str xzr, [%0]" ::"r"(&scs));
}
#else
// Silence unused variable warnings in non-SCS builds.
ScopedSCSExit() {}
~ScopedSCSExit() {}
#endif
};
void android_internal_os_ZygoteInit_nativePreloadAppProcessHALs(JNIEnv* env, jclass) {
ScopedSCSExit x;
android::GraphicBufferMapper::preloadHal();
// Add preloading here for other HALs that are (a) always passthrough, and
// (b) loaded by most app processes.
}
void android_internal_os_ZygoteInit_nativePreloadGraphicsDriver(JNIEnv* env, jclass) {
ScopedSCSExit x;
zygote_preload_graphics();
}