Fix dex2oat fallback (#2320)

This commit is contained in:
Nullptr 2023-01-15 14:22:49 +08:00 committed by GitHub
parent 182ec5c965
commit 0969a25816
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 1 deletions

View File

@ -32,6 +32,7 @@
#include <sys/sendfile.h> #include <sys/sendfile.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/system_properties.h> #include <sys/system_properties.h>
#include <sys/wait.h>
#include <unistd.h> #include <unistd.h>
#include "logging.h" #include "logging.h"
@ -112,7 +113,9 @@ Java_org_lsposed_lspd_service_Dex2OatService_initNative(JNIEnv *env, jobject thi
extern "C" extern "C"
JNIEXPORT void JNICALL JNIEXPORT void JNICALL
Java_org_lsposed_lspd_service_Dex2OatService_setEnabled(JNIEnv *env, jobject thiz, jboolean enabled) { Java_org_lsposed_lspd_service_Dex2OatService_setEnabled(JNIEnv *env, jobject thiz, jboolean enabled) {
if (vfork() == 0) { if (pid_t pid = fork(); pid > 0) { // parent
waitpid(pid, nullptr, 0);
} else { // child
int ns = open("/proc/1/ns/mnt", O_RDONLY); int ns = open("/proc/1/ns/mnt", O_RDONLY);
setns(ns, CLONE_NEWNS); setns(ns, CLONE_NEWNS);
close(ns); close(ns);