Skip to content
Snippets Groups Projects
Commit 55bbd5d8 authored by Elliott Hughes's avatar Elliott Hughes Committed by Gerrit Code Review
Browse files

Merge "Remove the workaround for old vendor blobs."

parents 943c640d 0db31323
No related branches found
No related tags found
No related merge requests found
......@@ -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();
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment