From 838e1e254d2aa0aa303e280fe73ccf590b6f53f7 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Tue, 13 Aug 2024 21:34:32 +0800 Subject: [PATCH] Move devpts mount to magiskinit --- native/src/core/daemon.cpp | 15 --------------- native/src/init/mount.cpp | 13 +++++++++++++ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/native/src/core/daemon.cpp b/native/src/core/daemon.cpp index 5d0e939d1..55bb3b00f 100644 --- a/native/src/core/daemon.cpp +++ b/native/src/core/daemon.cpp @@ -392,21 +392,6 @@ static void daemon_entry() { ssprintf(path, sizeof(path), "%s/" ROOTOVL, tmp); rm_rf(path); - // Use isolated devpts if kernel support - if (access("/dev/pts/ptmx", F_OK) == 0) { - ssprintf(path, sizeof(path), "%s/" SHELLPTS, tmp); - if (access(path, F_OK)) { - xmkdirs(path, 0755); - xmount("devpts", path, "devpts", MS_NOSUID | MS_NOEXEC, "newinstance"); - char ptmx[64]; - ssprintf(ptmx, sizeof(ptmx), "%s/ptmx", path); - if (access(ptmx, F_OK)) { - xumount(path); - rmdir(path); - } - } - } - fd = xsocket(AF_LOCAL, SOCK_STREAM | SOCK_CLOEXEC, 0); sockaddr_un addr = {.sun_family = AF_LOCAL}; ssprintf(addr.sun_path, sizeof(addr.sun_path), "%s/" MAIN_SOCKET, tmp); diff --git a/native/src/init/mount.cpp b/native/src/init/mount.cpp index b00a836a3..23c187dc8 100644 --- a/native/src/init/mount.cpp +++ b/native/src/init/mount.cpp @@ -249,5 +249,18 @@ void MagiskInit::setup_tmp(const char *path) { xmount(".", path, nullptr, MS_BIND, nullptr); + chdir(path); + + // Use isolated devpts if kernel support + if (access("/dev/pts/ptmx", F_OK) == 0) { + xmkdirs(SHELLPTS, 0755); + xmount("devpts", SHELLPTS, "devpts", MS_NOSUID | MS_NOEXEC, "newinstance"); + xmount(nullptr, SHELLPTS, nullptr, MS_PRIVATE, nullptr); + if (access(SHELLPTS "/ptmx", F_OK)) { + umount2(SHELLPTS, MNT_DETACH); + rmdir(SHELLPTS); + } + } + chdir("/"); }