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

Commit 89301c44 authored by Chris Wilson's avatar Chris Wilson
Browse files

Revert "Reset stack guard after fork from Zygote"

Revert "Remove stack protector from some interpreter functions"

Revert submission 2099076-stack-protector-2022

Reason for revert: CTS failures b/236399082
Reverted Changes:
Id65d0d96b:Remove stack protector from some interpreter funct...
Ia68cd0bf5:Reset stack guard after fork from Zygote
Bug: 236399082
Change-Id: Icbd74a9b38c5331aec5d9f516d841e7ec779e342
parent 5adb4076
Loading
Loading
Loading
Loading
+0 −15
Original line number Diff line number Diff line
@@ -94,10 +94,6 @@

#include "nativebridge/native_bridge.h"

#if defined(__BIONIC__)
extern "C" void android_reset_stack_guards();
#endif

namespace {

// TODO (chriswailes): Add a function to initialize native Zygote data.
@@ -416,7 +412,6 @@ static void sendSigChildStatus(const pid_t pid, const uid_t uid, const int statu
}

// This signal handler is for zygote mode, since the zygote must reap its children
NO_STACK_PROTECTOR
static void SigChldHandler(int /*signal_number*/, siginfo_t* info, void* /*ucontext*/) {
    pid_t pid;
    int status;
@@ -2047,7 +2042,6 @@ static std::set<int>* gPreloadFds = nullptr;
static bool gPreloadFdsExtracted = false;

// Utility routine to fork a process from the zygote.
NO_STACK_PROTECTOR
pid_t zygote::ForkCommon(JNIEnv* env, bool is_system_server,
                         const std::vector<int>& fds_to_close,
                         const std::vector<int>& fds_to_ignore,
@@ -2104,11 +2098,6 @@ pid_t zygote::ForkCommon(JNIEnv* env, bool is_system_server,
      setpriority(PRIO_PROCESS, 0, PROCESS_PRIORITY_MIN);
    }

#if defined(__BIONIC__)
    // Reset the stack guard for the new process.
    android_reset_stack_guards();
#endif

    // The child process.
    PreApplicationInit();

@@ -2141,7 +2130,6 @@ static void com_android_internal_os_Zygote_nativePreApplicationInit(JNIEnv*, jcl
  PreApplicationInit();
}

NO_STACK_PROTECTOR
static jint com_android_internal_os_Zygote_nativeForkAndSpecialize(
        JNIEnv* env, jclass, jint uid, jint gid, jintArray gids, jint runtime_flags,
        jobjectArray rlimits, jint mount_external, jstring se_info, jstring nice_name,
@@ -2196,7 +2184,6 @@ static jint com_android_internal_os_Zygote_nativeForkAndSpecialize(
    return pid;
}

NO_STACK_PROTECTOR
static jint com_android_internal_os_Zygote_nativeForkSystemServer(
        JNIEnv* env, jclass, uid_t uid, gid_t gid, jintArray gids,
        jint runtime_flags, jobjectArray rlimits, jlong permitted_capabilities,
@@ -2268,7 +2255,6 @@ static jint com_android_internal_os_Zygote_nativeForkSystemServer(
 * @param is_priority_fork  Controls the nice level assigned to the newly created process
 * @return child pid in the parent, 0 in the child
 */
NO_STACK_PROTECTOR
static jint com_android_internal_os_Zygote_nativeForkApp(JNIEnv* env,
                                                         jclass,
                                                         jint read_pipe_fd,
@@ -2283,7 +2269,6 @@ static jint com_android_internal_os_Zygote_nativeForkApp(JNIEnv* env,
                            args_known == JNI_TRUE, is_priority_fork == JNI_TRUE, true);
}

NO_STACK_PROTECTOR
int zygote::forkApp(JNIEnv* env,
                    int read_pipe_fd,
                    int write_pipe_fd,
+0 −8
Original line number Diff line number Diff line
@@ -20,14 +20,6 @@
#define LOG_TAG "Zygote"
#define ATRACE_TAG ATRACE_TAG_DALVIK

/*
 * All functions that lead to ForkCommon must be marked with the
 * no_stack_protector attributed.  Because ForkCommon changes the stack
 * protector cookie, all of the guard checks on the frames above ForkCommon
 * would fail when they are popped.
 */
#define NO_STACK_PROTECTOR __attribute__((no_stack_protector))

#include <jni.h>
#include <vector>
#include <android-base/stringprintf.h>
+0 −1
Original line number Diff line number Diff line
@@ -377,7 +377,6 @@ void com_android_internal_os_ZygoteCommandBuffer_nativeReadFullyAndReset(JNIEnv*
// We only process fork commands if the peer uid matches expected_uid.
// For every fork command after the first, we check that the requested uid is at
// least minUid.
NO_STACK_PROTECTOR
jboolean com_android_internal_os_ZygoteCommandBuffer_nativeForkRepeatedly(
            JNIEnv* env,
            jclass,