diff --git a/native/jni/core/daemon.cpp b/native/jni/core/daemon.cpp
index 771aeedcb..cb6198f72 100644
--- a/native/jni/core/daemon.cpp
+++ b/native/jni/core/daemon.cpp
@@ -349,13 +349,15 @@ static void daemon_entry() {
     // Use isolated devpts if kernel support
     if (access("/dev/pts/ptmx", F_OK) == 0) {
         auto pts = MAGISKTMP + "/" SHELLPTS;
-        xmkdirs(pts.data(), 0755);
-        xmount("devpts", pts.data(), "devpts",
-               MS_NOSUID | MS_NOEXEC, "newinstance");
-        auto ptmx = pts + "/ptmx";
-        if (access(ptmx.data(), F_OK)) {
-            xumount(pts.data());
-            rmdir(pts.data());
+        if (access(pts.data(), F_OK)) {
+            xmkdirs(pts.data(), 0755);
+            xmount("devpts", pts.data(), "devpts",
+                   MS_NOSUID | MS_NOEXEC, "newinstance");
+            auto ptmx = pts + "/ptmx";
+            if (access(ptmx.data(), F_OK)) {
+                xumount(pts.data());
+                rmdir(pts.data());
+            }
         }
     }